diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 97626ba45..c0bce7084 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -1,6 +1,7 @@ + \ No newline at end of file diff --git a/pom.xml b/pom.xml index e94916758..740edc9a1 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,8 @@ maven-surefire-plugin false + all + 5 diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java index aa660a1ab..c8e7755dc 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java @@ -11,9 +11,15 @@ class AsmFragmentTemplateSynthesisRule { * Contains matching groups (parenthesis) that are used in sigReplace to build the signature of the sub-fragment to synthesize from. */ final String sigMatch; + /** Compiled regex for sigMatch */ + Pattern sigMatchPattern = null; + /** Regular expression that limits which fragments the synthesize rule can handle. */ final String sigAvoid; + /** Compiled regex for sigAvoid */ + Pattern sigAvoidPattern = null; + /** ASM code prefixed to the sub-fragment when synthesizing. */ final private String asmPrefix; @@ -62,7 +68,20 @@ class AsmFragmentTemplateSynthesisRule { * @return true if the rule matches the signature */ public boolean matches(String signature) { - return signature.matches(sigMatch) && (sigAvoid == null || !signature.matches(sigAvoid)); + if (sigMatchPattern == null) + sigMatchPattern = Pattern.compile(sigMatch); + Matcher m = sigMatchPattern.matcher(signature); + if (m.matches()) { + if (sigAvoid == null) + return true; + else { + if (sigAvoidPattern == null) + sigAvoidPattern = Pattern.compile(sigAvoid); + Matcher ma = sigAvoidPattern.matcher(signature); + return !ma.matches(); + } + } + return false; } /** @@ -87,12 +106,12 @@ class AsmFragmentTemplateSynthesisRule { } public AsmFragmentTemplate synthesize(String signature, AsmFragmentTemplate subTemplate) { - if(!matches(signature)) { - throw new RuntimeException("Synthesis error! Attempting to synthesize on non-matching signature signature:"+signature+" match:"+sigMatch+" avoid:"+sigAvoid); - } - if(!subTemplate.getSignature().equals(getSubSignature(signature))) { - throw new RuntimeException("Synthesis error! Attempting to synthesize on non-matching sub template sub-signature:"+subTemplate.getSignature()+" expecting:"+getSubSignature(signature)); - } +// if(!matches(signature)) { +// throw new RuntimeException("Synthesis error! Attempting to synthesize on non-matching signature signature:"+signature+" match:"+sigMatch+" avoid:"+sigAvoid); +// } +// if(!subTemplate.getSignature().equals(getSubSignature(signature))) { +// throw new RuntimeException("Synthesis error! Attempting to synthesize on non-matching sub template sub-signature:"+subTemplate.getSignature()+" expecting:"+getSubSignature(signature)); +// } if(subDontClobber!=null) { if(subDontClobber.contains("aa") && subTemplate.getClobber().isClobberA()) return null; if(subDontClobber.contains("xx") && subTemplate.getClobber().isClobberX()) return null; diff --git a/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java b/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java index f8f2329b2..bf63062dd 100644 --- a/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java +++ b/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java @@ -1,17 +1,15 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.iterator.ProgramValueIterator; import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; import dk.camelot64.kickc.model.statements.StatementCall; import dk.camelot64.kickc.model.statements.StatementPhiBlock; import dk.camelot64.kickc.model.symbols.Procedure; import dk.camelot64.kickc.model.symbols.Symbol; -import dk.camelot64.kickc.model.values.LabelRef; -import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.ListIterator; +import java.util.*; /** * A named/labelled sequence of SSA statements connected to other basic blocks. @@ -45,7 +43,6 @@ public class ControlFlowBlock { this.label = label; this.scope = scope; this.statements = new ArrayList<>(); - this.defaultSuccessor = null; this.conditionalSuccessor = null; this.comments = new ArrayList<>(); } @@ -207,7 +204,7 @@ public class ControlFlowBlock { @Override public int hashCode() { int result = label.hashCode(); - result = 31 * result + (statements != null ? statements.hashCode() : 0); + result = 31 * result + statements.size(); result = 31 * result + (defaultSuccessor != null ? defaultSuccessor.hashCode() : 0); result = 31 * result + (conditionalSuccessor != null ? conditionalSuccessor.hashCode() : 0); result = 31 * result + (callSuccessor != null ? callSuccessor.hashCode() : 0); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass5DoubleJumpElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass5DoubleJumpElimination.java index b58931b3c..9d0971e6f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass5DoubleJumpElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass5DoubleJumpElimination.java @@ -40,9 +40,13 @@ public class Pass5DoubleJumpElimination extends Pass5AsmOptimization { if(currentLabel != null) { AsmInstruction asmInstruction = (AsmInstruction) line; AsmInstructionType jmpType = AsmInstructionSet.getInstructionType("jmp", AsmAddressingMode.ABS, false); + AsmInstructionType rtsType = AsmInstructionSet.getInstructionType("rts", AsmAddressingMode.NON, false); if(asmInstruction.getType().equals(jmpType)) { immediateJumps.put(currentScope + "::" + currentLabel, asmInstruction.getParameter()); } + if(asmInstruction.getType().equals(rtsType)) { + immediateJumps.put(currentScope + "::" + currentLabel, "rts"); + } } currentLabel = null; } else { @@ -62,7 +66,12 @@ public class Pass5DoubleJumpElimination extends Pass5AsmOptimization { AsmInstruction asmInstruction = (AsmInstruction) line; if(asmInstruction.getType().isJump()) { String immediateJmpTarget = immediateJumps.get(currentScope + "::" + asmInstruction.getParameter()); - if(immediateJmpTarget != null && !immediateJmpTarget.equals(asmInstruction.getParameter())) { + if(immediateJmpTarget == "rts" && asmInstruction.getType().getMnemnonic() == "jmp") { + getLog().append("Replacing jump to rts with rts in " + asmInstruction.toString()); + AsmInstructionType rtsType = AsmInstructionSet.getInstructionType("rts", AsmAddressingMode.NON, false); + asmInstruction.setType(rtsType); + optimized = true; + } else if(immediateJmpTarget != null && immediateJmpTarget != "rts" && !immediateJmpTarget.equals(asmInstruction.getParameter())) { getLog().append("Skipping double jump to " + immediateJmpTarget + " in " + asmInstruction.toString()); asmInstruction.setParameter(immediateJmpTarget); optimized = true; diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java b/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java index cdb7bdd3e..02f131ce0 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java @@ -20,6 +20,9 @@ public class PassNVariableReferenceInfos extends Pass2SsaOptimization { super(program); } + private LinkedHashMap> blockDirectVarRefsMap = null; + private LinkedHashMap> blockDirectUsedVarsMap = null; + /** Create defined/referenced maps */ @Override public boolean step() { @@ -28,28 +31,40 @@ public class PassNVariableReferenceInfos extends Pass2SsaOptimization { LinkedHashMap> stmtReferenced = new LinkedHashMap<>(); LinkedHashMap> stmtDefined = new LinkedHashMap<>(); Map> symbolVarReferences = new LinkedHashMap<>(); + blockDirectVarRefsMap = new LinkedHashMap<>(); + blockDirectUsedVarsMap = new LinkedHashMap<>(); for(ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) { - LabelRef blockLabel = block.getLabel(); - blockReferencedVars.put(blockLabel, getReferencedVars(blockLabel, new ArrayList<>())); - blockUsedVars.put(blockLabel, getUsedVars(blockLabel, new ArrayList<>())); + LinkedHashSet blockDirectVarRefs = new LinkedHashSet<>();; + LinkedHashSet blockDirectUsedVars = new LinkedHashSet<>();; for(Statement statement : block.getStatements()) { - Collection referenced = getReferenced(statement); - Collection defined = getDefinedVars(statement); + LinkedHashSet stmtSymbolVarRefs = new LinkedHashSet<>(); + LinkedHashSet stmtVarRefs = new LinkedHashSet<>(); + LinkedHashSet stmtUsedVars = new LinkedHashSet<>(); + ProgramValueIterator.execute(statement, + (programValue, currentStmt, stmtIt, currentBlock) -> { + if(programValue.get() instanceof SymbolVariableRef) + stmtSymbolVarRefs.add((SymbolVariableRef) programValue.get()); + if(programValue.get() instanceof VariableRef) + stmtVarRefs.add((VariableRef) programValue.get()); + } + , null, null); + Collection stmtDefinedVars = getDefinedVars(statement); + stmtUsedVars.addAll(stmtVarRefs); + stmtUsedVars.removeAll(stmtDefinedVars); + blockDirectVarRefs.addAll(stmtVarRefs); + blockDirectUsedVars.addAll(stmtUsedVars); + // Add variable definitions to the statement - stmtDefined.put(statement.getIndex(), defined); + stmtDefined.put(statement.getIndex(), stmtDefinedVars); // Identify statement defining variables - for(VariableRef variableRef : defined) { + for(VariableRef variableRef : stmtDefinedVars) { symbolVarReferences.putIfAbsent(variableRef, new ArrayList<>()); Collection references = symbolVarReferences.get(variableRef); references.add(new VariableReferenceInfos.ReferenceInStatement(statement.getIndex(), VariableReferenceInfos.ReferenceToSymbolVar.ReferenceType.DEFINE, variableRef)); } // Gather statements referencing variables/constants - Collection varRefs = new ArrayList<>(); - for(SymbolVariableRef referencedVarRef : referenced) { - if(referencedVarRef instanceof VariableRef) { - varRefs.add((VariableRef) referencedVarRef); - } - if(!defined.contains(referencedVarRef)) { + for(SymbolVariableRef referencedVarRef : stmtSymbolVarRefs) { + if(!stmtDefinedVars.contains(referencedVarRef)) { symbolVarReferences.putIfAbsent(referencedVarRef, new ArrayList<>()); Collection references = symbolVarReferences.get(referencedVarRef); references.add( @@ -60,8 +75,19 @@ public class PassNVariableReferenceInfos extends Pass2SsaOptimization { } } // Add variable reference to the statement - stmtReferenced.put(statement.getIndex(), varRefs); + stmtReferenced.put(statement.getIndex(), stmtVarRefs); } + LabelRef blockLabel = block.getLabel(); + blockDirectVarRefsMap.put(blockLabel, blockDirectVarRefs); + blockDirectUsedVarsMap.put(blockLabel, blockDirectUsedVars); + } + for(ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) { + LabelRef blockLabel = block.getLabel(); + LinkedHashSet blockRecursiveVarRefs = new LinkedHashSet<>(); + LinkedHashSet blockRecursiveUsedVars = new LinkedHashSet<>(); + addReferencedVars(block.getLabel(), block, blockRecursiveVarRefs, blockRecursiveUsedVars, new ArrayList<>()); + blockReferencedVars.put(blockLabel, blockRecursiveVarRefs); + blockUsedVars.put(blockLabel, blockRecursiveUsedVars); } // Gather symbols in the symbol table referencing other variables/constants Collection allSymbolVariables = getProgram().getScope().getAllSymbolVariables(true); @@ -81,7 +107,6 @@ public class PassNVariableReferenceInfos extends Pass2SsaOptimization { return false; } - /** * Get all variables referenced in an rValue * @@ -131,67 +156,29 @@ public class PassNVariableReferenceInfos extends Pass2SsaOptimization { } /** - * Get all variables used inside a block and its successors (including any called method) + * Recursively get all variables used or defined inside a block and its successors (including any called method) * * @param labelRef The block to examine + * @param block The block to examine (optional, saves lookup) + * @param referencedVars the set of referenced variables + * @param usedVars the set of referenced variables * @param visited The blocks already visited during the search. Used to stop infinite recursion * @return All used variables */ - private Collection getUsedVars(LabelRef labelRef, Collection visited) { - if(labelRef == null) { - return new ArrayList<>(); - } - if(visited.contains(labelRef)) { - return new ArrayList<>(); - } + private void addReferencedVars(LabelRef labelRef, ControlFlowBlock block, LinkedHashSet referencedVars, LinkedHashSet usedVars, Collection visited) { + if(labelRef == null || visited.contains(labelRef)) + return; visited.add(labelRef); - ControlFlowBlock block = getProgram().getGraph().getBlock(labelRef); if(block == null) { - return new ArrayList<>(); + block = getProgram().getGraph().getBlock(labelRef); + if(block == null) + return; } - LinkedHashSet used = new LinkedHashSet<>(); - for(Statement statement : block.getStatements()) { - used.addAll(getUsedVars(statement)); - if(statement instanceof StatementCall) { - ProcedureRef procedure = ((StatementCall) statement).getProcedure(); - used.addAll(getUsedVars(procedure.getLabelRef(), visited)); - } - } - used.addAll(getUsedVars(block.getDefaultSuccessor(), visited)); - used.addAll(getUsedVars(block.getConditionalSuccessor(), visited)); - return used; - } - - /** - * Get all variables used or defined inside a block and its successors (including any called method) - * - * @param labelRef The block to examine - * @param visited The blocks already visited during the search. Used to stop infinite recursion - * @return All used variables - */ - private Collection getReferencedVars(LabelRef labelRef, Collection visited) { - if(labelRef == null) { - return new ArrayList<>(); - } - if(visited.contains(labelRef)) { - return new ArrayList<>(); - } - visited.add(labelRef); - ControlFlowBlock block = getProgram().getGraph().getBlock(labelRef); - if(block == null) { - return new ArrayList<>(); - } - LinkedHashSet referenced = new LinkedHashSet<>(); - for(Statement statement : block.getStatements()) { - referenced.addAll(getReferencedVars(statement)); - if(statement instanceof StatementCall) { - ProcedureRef procedure = ((StatementCall) statement).getProcedure(); - referenced.addAll(getReferencedVars(procedure.getLabelRef(), visited)); - } - } - referenced.addAll(getReferencedVars(block.getDefaultSuccessor(), visited)); - referenced.addAll(getReferencedVars(block.getConditionalSuccessor(), visited)); - return referenced; + referencedVars.addAll(blockDirectVarRefsMap.get(labelRef)); + usedVars.addAll(blockDirectUsedVarsMap.get(labelRef)); + addReferencedVars(block.getDefaultSuccessor(), null, referencedVars, usedVars, visited); + addReferencedVars(block.getConditionalSuccessor(), null, referencedVars, usedVars, visited); + addReferencedVars(block.getCallSuccessor(), null, referencedVars, usedVars, visited); } /** @@ -230,50 +217,4 @@ public class PassNVariableReferenceInfos extends Pass2SsaOptimization { return new ArrayList<>(); } - /** - * Get the variables used, but not defined, in a statement - * - * @param statement The statement to examine - * @return The used variables (not including defined variables) - */ - private Collection getUsedVars(Statement statement) { - LinkedHashSet used = new LinkedHashSet<>(); - used.addAll(getReferencedVars(statement)); - used.removeAll(getDefinedVars(statement)); - return used; - } - - /** - * Get the variables referenced (used or defined) in a statement - * - * @param statement The statement to examine - * @return The referenced variables - */ - private Collection getReferencedVars(Statement statement) { - LinkedHashSet referencedVars = new LinkedHashSet<>(); - getReferenced(statement) - .stream() - .filter(symbolVariableRef -> symbolVariableRef instanceof VariableRef) - .forEach(symbolVariableRef -> referencedVars.add((VariableRef) symbolVariableRef)); - return referencedVars; - } - - /** - * Get the variables / constants referenced (used or defined) in a statement - * - * @param statement The statement to examine - * @return The referenced variables / constants (VariableRef / ConstantRef) - */ - private Collection getReferenced(Statement statement) { - LinkedHashSet referenced = new LinkedHashSet<>(); - ProgramValueIterator.execute(statement, - (programValue, currentStmt, stmtIt, currentBlock) -> { - if(programValue.get() instanceof SymbolVariableRef) - referenced.add((SymbolVariableRef) programValue.get()); - } - , null, null); - return referenced; - } - - } diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index a98443a9f..9cb4d73bd 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -793,6 +793,11 @@ public class TestPrograms { compileAndCompare("const-param"); } + @Test + public void testDeepNesting() throws IOException, URISyntaxException { + compileAndCompare("deep-nesting"); + } + @Test public void testHelloWorld() throws IOException, URISyntaxException { compileAndCompare("examples/helloworld/helloworld"); diff --git a/src/test/kc/deep-nesting.kc b/src/test/kc/deep-nesting.kc new file mode 100644 index 000000000..49aab2831 --- /dev/null +++ b/src/test/kc/deep-nesting.kc @@ -0,0 +1,108 @@ +// Test that the compiler handles deep nesting well -- mainly a performance issue. + +void main() { + byte* screen = $400; + const byte reverse = $80; + screen[0] = f1(0); +} + +byte f1(byte x) { return f2(x) + 1; } +byte f2(byte x) { return f3(x) + 1; } +byte f3(byte x) { return f4(x) + 1; } +byte f4(byte x) { return f5(x) + 1; } +byte f5(byte x) { return f6(x) + 1; } +byte f6(byte x) { return f7(x) + 1; } +byte f7(byte x) { return f8(x) + 1; } +byte f8(byte x) { return f9(x) + 1; } +byte f9(byte x) { return f10(x) + 1; } +byte f10(byte x) { return f11(x) + 1; } +byte f11(byte x) { return f12(x) + 1; } +byte f12(byte x) { return f13(x) + 1; } +byte f13(byte x) { return f14(x) + 1; } +byte f14(byte x) { return f15(x) + 1; } +byte f15(byte x) { return f16(x) + 1; } +byte f16(byte x) { return f17(x) + 1; } +byte f17(byte x) { return f18(x) + 1; } +byte f18(byte x) { return f19(x) + 1; } +byte f19(byte x) { return f20(x) + 1; } +byte f20(byte x) { return f21(x) + 1; } +byte f21(byte x) { return f22(x) + 1; } +byte f22(byte x) { return f23(x) + 1; } +byte f23(byte x) { return f24(x) + 1; } +byte f24(byte x) { return f25(x) + 1; } +byte f25(byte x) { return f26(x) + 1; } +byte f26(byte x) { return f27(x) + 1; } +byte f27(byte x) { return f28(x) + 1; } +byte f28(byte x) { return f29(x) + 1; } +byte f29(byte x) { return f30(x) + 1; } +byte f30(byte x) { return f31(x) + 1; } +byte f31(byte x) { return f32(x) + 1; } +byte f32(byte x) { return f33(x) + 1; } +byte f33(byte x) { return f34(x) + 1; } +byte f34(byte x) { return f35(x) + 1; } +byte f35(byte x) { return f36(x) + 1; } +byte f36(byte x) { return f37(x) + 1; } +byte f37(byte x) { return f38(x) + 1; } +byte f38(byte x) { return f39(x) + 1; } +byte f39(byte x) { return f40(x) + 1; } +byte f40(byte x) { return f41(x) + 1; } +byte f41(byte x) { return f42(x) + 1; } +byte f42(byte x) { return f43(x) + 1; } +byte f43(byte x) { return f44(x) + 1; } +byte f44(byte x) { return f45(x) + 1; } +byte f45(byte x) { return f46(x) + 1; } +byte f46(byte x) { return f47(x) + 1; } +byte f47(byte x) { return f48(x) + 1; } +byte f48(byte x) { return f49(x) + 1; } +byte f49(byte x) { return f50(x) + 1; } +byte f50(byte x) { return f51(x) + 1; } +byte f51(byte x) { return f52(x) + 1; } +byte f52(byte x) { return f53(x) + 1; } +byte f53(byte x) { return f54(x) + 1; } +byte f54(byte x) { return f55(x) + 1; } +byte f55(byte x) { return f56(x) + 1; } +byte f56(byte x) { return f57(x) + 1; } +byte f57(byte x) { return f58(x) + 1; } +byte f58(byte x) { return f59(x) + 1; } +byte f59(byte x) { return f60(x) + 1; } +byte f60(byte x) { return f61(x) + 1; } +byte f61(byte x) { return f62(x) + 1; } +byte f62(byte x) { return f63(x) + 1; } +byte f63(byte x) { return f64(x) + 1; } +byte f64(byte x) { return f65(x) + 1; } +byte f65(byte x) { return f66(x) + 1; } +byte f66(byte x) { return f67(x) + 1; } +byte f67(byte x) { return f68(x) + 1; } +byte f68(byte x) { return f69(x) + 1; } +byte f69(byte x) { return f70(x) + 1; } +byte f70(byte x) { return f71(x) + 1; } +byte f71(byte x) { return f72(x) + 1; } +byte f72(byte x) { return f73(x) + 1; } +byte f73(byte x) { return f74(x) + 1; } +byte f74(byte x) { return f75(x) + 1; } +byte f75(byte x) { return f76(x) + 1; } +byte f76(byte x) { return f77(x) + 1; } +byte f77(byte x) { return f78(x) + 1; } +byte f78(byte x) { return f79(x) + 1; } +byte f79(byte x) { return f80(x) + 1; } +byte f80(byte x) { return f81(x) + 1; } +byte f81(byte x) { return f82(x) + 1; } +byte f82(byte x) { return f83(x) + 1; } +byte f83(byte x) { return f84(x) + 1; } +byte f84(byte x) { return f85(x) + 1; } +byte f85(byte x) { return f86(x) + 1; } +byte f86(byte x) { return f87(x) + 1; } +byte f87(byte x) { return f88(x) + 1; } +byte f88(byte x) { return f89(x) + 1; } +byte f89(byte x) { return f90(x) + 1; } +byte f90(byte x) { return f91(x) + 1; } +byte f91(byte x) { return f92(x) + 1; } +byte f92(byte x) { return f93(x) + 1; } +byte f93(byte x) { return f94(x) + 1; } +byte f94(byte x) { return f95(x) + 1; } +byte f95(byte x) { return f96(x) + 1; } +byte f96(byte x) { return f97(x) + 1; } +byte f97(byte x) { return f98(x) + 1; } +byte f98(byte x) { return f99(x) + 1; } +byte f99(byte x) { return f100(x) + 1; } +byte f100(byte x) { return x;} \ No newline at end of file diff --git a/src/test/ref/assignment-compound.asm b/src/test/ref/assignment-compound.asm index 2dc7a0d86..600edaeca 100644 --- a/src/test/ref/assignment-compound.asm +++ b/src/test/ref/assignment-compound.asm @@ -66,11 +66,10 @@ test: { beq b1 lda #RED sta cols,x - breturn: rts b1: lda #GREEN sta cols,x - jmp breturn + rts } ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 diff --git a/src/test/ref/assignment-compound.log b/src/test/ref/assignment-compound.log index e2acc6c8e..5027be640 100644 --- a/src/test/ref/assignment-compound.log +++ b/src/test/ref/assignment-compound.log @@ -1169,7 +1169,10 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -1216,7 +1219,7 @@ reg byte x [ test::i#11 ] FINAL ASSEMBLER -Score: 199 +Score: 202 //SEG0 File Comments // Test compound assignment operators @@ -1370,7 +1373,6 @@ test: { lda #RED sta cols,x //SEG83 test::@return - breturn: //SEG84 [32] return rts //SEG85 test::@1 @@ -1378,7 +1380,7 @@ test: { //SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta cols,x - jmp breturn + rts } ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 diff --git a/src/test/ref/bool-pointer.asm b/src/test/ref/bool-pointer.asm index 7cf1fabd6..3a0816d2b 100644 --- a/src/test/ref/bool-pointer.asm +++ b/src/test/ref/bool-pointer.asm @@ -11,10 +11,9 @@ main: { sta $400+2 cmp #0 bne b1 - breturn: rts b1: lda #1 sta $400+2+1 - jmp breturn + rts } diff --git a/src/test/ref/bool-pointer.log b/src/test/ref/bool-pointer.log index 488426ef6..ab20c7d5a 100644 --- a/src/test/ref/bool-pointer.log +++ b/src/test/ref/bool-pointer.log @@ -244,7 +244,10 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -259,7 +262,7 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER -Score: 37 +Score: 40 //SEG0 File Comments // Tests a pointer to a boolean @@ -289,7 +292,6 @@ main: { cmp #0 bne b1 //SEG14 main::@return - breturn: //SEG15 [8] return rts //SEG16 main::@1 @@ -297,6 +299,6 @@ main: { //SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 lda #1 sta $400+2+1 - jmp breturn + rts } diff --git a/src/test/ref/c64dtv-gfxexplorer.asm b/src/test/ref/c64dtv-gfxexplorer.asm index 44de633c1..84c5985b4 100644 --- a/src/test/ref/c64dtv-gfxexplorer.asm +++ b/src/test/ref/c64dtv-gfxexplorer.asm @@ -531,10 +531,9 @@ keyboard_event_get: { dec keyboard_events_size ldy keyboard_events_size lda keyboard_events,y - jmp breturn + rts b1: lda #$ff - breturn: rts } // Scans the entire matrix to determine which keys have been pressed/depressed. @@ -693,31 +692,30 @@ get_vic_screen: { sta return lda #>VIC_SCREEN4 sta return+1 - jmp breturn + rts b2: lda #VIC_SCREEN0 sta return+1 - jmp breturn + rts b3: lda #VIC_SCREEN1 sta return+1 - jmp breturn + rts b4: lda #VIC_SCREEN2 sta return+1 - jmp breturn + rts b5: lda #VIC_SCREEN3 sta return+1 - breturn: rts } // Get the VIC charset/bitmap address from the index @@ -732,13 +730,12 @@ get_vic_charset: { sta return lda #>VIC_BITMAP sta return+1 - jmp breturn + rts b2: lda #VIC_CHARSET_ROM sta return+1 - breturn: rts } // Get plane address from a plane index (from the form) @@ -797,7 +794,7 @@ get_plane: { sta return+2 lda #>PLANE_FULL>>$10 sta return+3 - jmp breturn + rts b2: lda #<$ffffffff&VIC_SCREEN0 sta return @@ -807,7 +804,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN0>>$10 sta return+3 - jmp breturn + rts b3: lda #PLANE_HORISONTAL2>>$10 sta return+3 - jmp breturn + rts b4: lda #PLANE_VERTICAL2>>$10 sta return+3 - jmp breturn + rts b5: lda #PLANE_CHARSET8>>$10 sta return+3 - jmp breturn + rts b6: lda #PLANE_BLANK>>$10 sta return+3 - jmp breturn + rts b7: lda #<$ffffffff&VIC_SCREEN1 sta return @@ -857,7 +854,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN1>>$10 sta return+3 - jmp breturn + rts b8: lda #<$ffffffff&VIC_SCREEN2 sta return @@ -867,7 +864,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN2>>$10 sta return+3 - jmp breturn + rts b9: lda #<$ffffffff&VIC_SCREEN3 sta return @@ -877,7 +874,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN3>>$10 sta return+3 - jmp breturn + rts b10: lda #<$ffffffff&VIC_BITMAP sta return @@ -887,7 +884,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_BITMAP>>$10 sta return+3 - jmp breturn + rts b11: lda #<$ffffffff&VIC_CHARSET_ROM sta return @@ -897,7 +894,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_CHARSET_ROM>>$10 sta return+3 - jmp breturn + rts b12: lda #PLANE_8BPP_CHUNKY>>$10 sta return+3 - jmp breturn + rts b13: lda #PLANE_HORISONTAL>>$10 sta return+3 - jmp breturn + rts b14: lda #PLANE_VERTICAL>>$10 sta return+3 - breturn: rts } // Show the form - and let the user change values @@ -1357,7 +1353,6 @@ form_control: { lda #FORM_CURSOR_BLINK/2 sta form_cursor_count ldx #0 - breturn: rts b12: inc form_field_idx @@ -1391,7 +1386,7 @@ form_control: { sta (field),y b6: ldx #0 - jmp breturn + rts b14: ldx form_field_idx inc form_fields_val,x @@ -1407,7 +1402,7 @@ form_control: { cmp #KEY_SPACE bne b6 ldx #$ff - jmp breturn + rts b2: lda #$80 ldy #0 @@ -2007,7 +2002,6 @@ bitmap_line: { sta bitmap_line_ydxi.y1 sty bitmap_line_ydxi.yd jsr bitmap_line_ydxi - breturn: rts b8: stx bitmap_line_xdyi.x @@ -2015,7 +2009,7 @@ bitmap_line: { sta bitmap_line_xdyi.y sty bitmap_line_xdyi.yd jsr bitmap_line_xdyi - jmp breturn + rts b7: lda y1 sec @@ -2030,14 +2024,14 @@ bitmap_line: { sta bitmap_line_ydxd.y1 sty bitmap_line_ydxd.yd jsr bitmap_line_ydxd - jmp breturn + rts b9: stx bitmap_line_xdyd.x lda y1 sta bitmap_line_xdyd.y sty bitmap_line_xdyd.yd jsr bitmap_line_xdyd - jmp breturn + rts b1: txa sec @@ -2055,14 +2049,14 @@ bitmap_line: { sta bitmap_line_ydxd.y sty bitmap_line_ydxd.yd jsr bitmap_line_ydxd - jmp breturn + rts b12: lda x0 sta bitmap_line_xdyd.x stx bitmap_line_xdyd.x1 sty bitmap_line_xdyd.yd jsr bitmap_line_xdyd - jmp breturn + rts b11: lda y1 sec @@ -2075,14 +2069,14 @@ bitmap_line: { ldx x0 sty bitmap_line_ydxi.yd jsr bitmap_line_ydxi - jmp breturn + rts b13: lda x0 sta bitmap_line_xdyi.x stx bitmap_line_xdyi.x1 sty bitmap_line_xdyi.yd jsr bitmap_line_xdyi - jmp breturn + rts } // bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyi: { diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log index 5707f004c..6f318d8f1 100644 --- a/src/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/ref/c64dtv-gfxexplorer.log @@ -27164,16 +27164,44 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn Skipping double jump to b9 in bne b9_from_b10 Skipping double jump to breturn_from_b1 in bne b1 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to breturn_from_b1 in bne b1 +Replacing jump to rts with rts in jmp breturn Skipping double jump to breturn_from_b1 in bne b1 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to b4 in jmp b3_from_b2 Skipping double jump to b1 in bpl b20 Skipping double jump to b13 in bne b21 Skipping double jump to b21 in bne b22 Skipping double jump to b13 in jmp b21 +Replacing jump to rts with rts in jmp breturn Skipping double jump to breturn_from_b23 in bne b23 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to b2 in bne b6 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_gfx_mode to b10 @@ -27276,14 +27304,20 @@ Removing instruction lda y0 Removing instruction lda y0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: +Removing instruction breturn: Removing instruction b5: +Removing instruction breturn: Removing instruction b1: +Removing instruction breturn: Removing instruction b1: +Removing instruction breturn: Removing instruction b1: Removing instruction b2: +Removing instruction breturn: Removing instruction b22: Removing instruction b23: Removing instruction b20: +Removing instruction breturn: Removing instruction b6: Succesful ASM optimization Pass5UnusedLabelElimination Skipping double jump to b13 in bne b21 @@ -27301,15 +27335,15 @@ Removing instruction b21: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b13 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [750] beq b7 to bne -Fixing long branch [754] beq b8 to bne -Fixing long branch [758] beq b9 to bne -Fixing long branch [762] beq b10 to bne -Fixing long branch [766] beq b11 to bne -Fixing long branch [770] beq b12 to bne -Fixing long branch [774] beq b13 to bne -Fixing long branch [778] beq b14 to bne -Fixing long branch [1328] bmi b2 to bpl +Fixing long branch [747] beq b7 to bne +Fixing long branch [751] beq b8 to bne +Fixing long branch [755] beq b9 to bne +Fixing long branch [759] beq b10 to bne +Fixing long branch [763] beq b11 to bne +Fixing long branch [767] beq b12 to bne +Fixing long branch [771] beq b13 to bne +Fixing long branch [775] beq b14 to bne +Fixing long branch [1324] bmi b2 to bpl FINAL SYMBOL TABLE (label) @1 @@ -29022,7 +29056,7 @@ reg byte a [ gfx_init_screen0::$3 ] FINAL ASSEMBLER -Score: 10142472 +Score: 10142556 //SEG0 File Comments // Interactive Explorer for C64DTV Screen Modes @@ -29818,14 +29852,13 @@ keyboard_event_get: { //SEG258 [157] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] //SEG259 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy //SEG260 [157] 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 - jmp breturn + rts //SEG261 [157] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: //SEG262 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#100 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy //SEG263 [157] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff //SEG264 keyboard_event_get::@return - breturn: //SEG265 [158] return rts } @@ -30118,7 +30151,7 @@ get_vic_screen: { sta return lda #>VIC_SCREEN4 sta return+1 - jmp breturn + rts //SEG399 [228] phi from get_vic_screen get_vic_screen::@1 to get_vic_screen::@return [phi:get_vic_screen/get_vic_screen::@1->get_vic_screen::@return] b2: //SEG400 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN0#0 [phi:get_vic_screen/get_vic_screen::@1->get_vic_screen::@return#0] -- pbuz1=pbuc1 @@ -30126,7 +30159,7 @@ get_vic_screen: { sta return lda #>VIC_SCREEN0 sta return+1 - jmp breturn + rts //SEG401 [228] phi from get_vic_screen::@2 to get_vic_screen::@return [phi:get_vic_screen::@2->get_vic_screen::@return] b3: //SEG402 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN1#0 [phi:get_vic_screen::@2->get_vic_screen::@return#0] -- pbuz1=pbuc1 @@ -30134,7 +30167,7 @@ get_vic_screen: { sta return lda #>VIC_SCREEN1 sta return+1 - jmp breturn + rts //SEG403 [228] phi from get_vic_screen::@3 to get_vic_screen::@return [phi:get_vic_screen::@3->get_vic_screen::@return] b4: //SEG404 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN2#0 [phi:get_vic_screen::@3->get_vic_screen::@return#0] -- pbuz1=pbuc1 @@ -30142,7 +30175,7 @@ get_vic_screen: { sta return lda #>VIC_SCREEN2 sta return+1 - jmp breturn + rts //SEG405 [228] phi from get_vic_screen::@4 to get_vic_screen::@return [phi:get_vic_screen::@4->get_vic_screen::@return] b5: //SEG406 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN3#0 [phi:get_vic_screen::@4->get_vic_screen::@return#0] -- pbuz1=pbuc1 @@ -30151,7 +30184,6 @@ get_vic_screen: { lda #>VIC_SCREEN3 sta return+1 //SEG407 get_vic_screen::@return - breturn: //SEG408 [229] return rts //SEG409 [230] phi from get_vic_screen::@5 to get_vic_screen::@1 [phi:get_vic_screen::@5->get_vic_screen::@1] @@ -30175,7 +30207,7 @@ get_vic_charset: { sta return lda #>VIC_BITMAP sta return+1 - jmp breturn + rts //SEG417 [233] phi from get_vic_charset get_vic_charset::@1 to get_vic_charset::@return [phi:get_vic_charset/get_vic_charset::@1->get_vic_charset::@return] b2: //SEG418 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_CHARSET_ROM#0 [phi:get_vic_charset/get_vic_charset::@1->get_vic_charset::@return#0] -- pbuz1=pbuc1 @@ -30184,7 +30216,6 @@ get_vic_charset: { lda #>VIC_CHARSET_ROM sta return+1 //SEG419 get_vic_charset::@return - breturn: //SEG420 [234] return rts //SEG421 [235] phi from get_vic_charset::@2 to get_vic_charset::@1 [phi:get_vic_charset::@2->get_vic_charset::@1] @@ -30276,7 +30307,7 @@ get_plane: { sta return+2 lda #>PLANE_FULL>>$10 sta return+3 - jmp breturn + rts //SEG453 [251] phi from get_plane get_plane::@1 to get_plane::@return [phi:get_plane/get_plane::@1->get_plane::@return] b2: //SEG454 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN0#0 [phi:get_plane/get_plane::@1->get_plane::@return#0] -- vduz1=vduc1 @@ -30288,7 +30319,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN0>>$10 sta return+3 - jmp breturn + rts //SEG455 [251] phi from get_plane::@10 to get_plane::@return [phi:get_plane::@10->get_plane::@return] b3: //SEG456 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL2#0 [phi:get_plane::@10->get_plane::@return#0] -- vduz1=vduc1 @@ -30300,7 +30331,7 @@ get_plane: { sta return+2 lda #>PLANE_HORISONTAL2>>$10 sta return+3 - jmp breturn + rts //SEG457 [251] phi from get_plane::@11 to get_plane::@return [phi:get_plane::@11->get_plane::@return] b4: //SEG458 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL2#0 [phi:get_plane::@11->get_plane::@return#0] -- vduz1=vduc1 @@ -30312,7 +30343,7 @@ get_plane: { sta return+2 lda #>PLANE_VERTICAL2>>$10 sta return+3 - jmp breturn + rts //SEG459 [251] phi from get_plane::@12 to get_plane::@return [phi:get_plane::@12->get_plane::@return] b5: //SEG460 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_CHARSET8#0 [phi:get_plane::@12->get_plane::@return#0] -- vduz1=vduc1 @@ -30324,7 +30355,7 @@ get_plane: { sta return+2 lda #>PLANE_CHARSET8>>$10 sta return+3 - jmp breturn + rts //SEG461 [251] phi from get_plane::@13 to get_plane::@return [phi:get_plane::@13->get_plane::@return] b6: //SEG462 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_BLANK#0 [phi:get_plane::@13->get_plane::@return#0] -- vduz1=vduc1 @@ -30336,7 +30367,7 @@ get_plane: { sta return+2 lda #>PLANE_BLANK>>$10 sta return+3 - jmp breturn + rts //SEG463 [251] phi from get_plane::@2 to get_plane::@return [phi:get_plane::@2->get_plane::@return] b7: //SEG464 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN1#0 [phi:get_plane::@2->get_plane::@return#0] -- vduz1=vduc1 @@ -30348,7 +30379,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN1>>$10 sta return+3 - jmp breturn + rts //SEG465 [251] phi from get_plane::@3 to get_plane::@return [phi:get_plane::@3->get_plane::@return] b8: //SEG466 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN2#0 [phi:get_plane::@3->get_plane::@return#0] -- vduz1=vduc1 @@ -30360,7 +30391,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN2>>$10 sta return+3 - jmp breturn + rts //SEG467 [251] phi from get_plane::@4 to get_plane::@return [phi:get_plane::@4->get_plane::@return] b9: //SEG468 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN3#0 [phi:get_plane::@4->get_plane::@return#0] -- vduz1=vduc1 @@ -30372,7 +30403,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_SCREEN3>>$10 sta return+3 - jmp breturn + rts //SEG469 [251] phi from get_plane::@5 to get_plane::@return [phi:get_plane::@5->get_plane::@return] b10: //SEG470 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_BITMAP#0 [phi:get_plane::@5->get_plane::@return#0] -- vduz1=vduc1 @@ -30384,7 +30415,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_BITMAP>>$10 sta return+3 - jmp breturn + rts //SEG471 [251] phi from get_plane::@6 to get_plane::@return [phi:get_plane::@6->get_plane::@return] b11: //SEG472 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_CHARSET_ROM#0 [phi:get_plane::@6->get_plane::@return#0] -- vduz1=vduc1 @@ -30396,7 +30427,7 @@ get_plane: { sta return+2 lda #>$ffffffff&VIC_CHARSET_ROM>>$10 sta return+3 - jmp breturn + rts //SEG473 [251] phi from get_plane::@7 to get_plane::@return [phi:get_plane::@7->get_plane::@return] b12: //SEG474 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_8BPP_CHUNKY#0 [phi:get_plane::@7->get_plane::@return#0] -- vduz1=vduc1 @@ -30408,7 +30439,7 @@ get_plane: { sta return+2 lda #>PLANE_8BPP_CHUNKY>>$10 sta return+3 - jmp breturn + rts //SEG475 [251] phi from get_plane::@8 to get_plane::@return [phi:get_plane::@8->get_plane::@return] b13: //SEG476 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL#0 [phi:get_plane::@8->get_plane::@return#0] -- vduz1=vduc1 @@ -30420,7 +30451,7 @@ get_plane: { sta return+2 lda #>PLANE_HORISONTAL>>$10 sta return+3 - jmp breturn + rts //SEG477 [251] phi from get_plane::@9 to get_plane::@return [phi:get_plane::@9->get_plane::@return] b14: //SEG478 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL#0 [phi:get_plane::@9->get_plane::@return#0] -- vduz1=vduc1 @@ -30433,7 +30464,6 @@ get_plane: { lda #>PLANE_VERTICAL>>$10 sta return+3 //SEG479 get_plane::@return - breturn: //SEG480 [252] return rts //SEG481 [253] phi from get_plane::@14 to get_plane::@1 [phi:get_plane::@14->get_plane::@1] @@ -31158,7 +31188,6 @@ form_control: { //SEG773 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@13->form_control::@return#2] -- vbuxx=vbuc1 ldx #0 //SEG774 form_control::@return - breturn: //SEG775 [389] return rts //SEG776 [390] phi from form_control::@8 to form_control::@21 [phi:form_control::@8->form_control::@21] @@ -31220,7 +31249,7 @@ form_control: { //SEG801 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@15/form_control::@23->form_control::@return#1] -- register_copy //SEG802 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@15/form_control::@23->form_control::@return#2] -- vbuxx=vbuc1 ldx #0 - jmp breturn + rts //SEG803 form_control::@14 b14: //SEG804 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 @@ -31247,7 +31276,7 @@ form_control: { //SEG812 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@5->form_control::@return#1] -- register_copy //SEG813 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:form_control::@5->form_control::@return#2] -- vbuxx=vbuc1 ldx #$ff - jmp breturn + rts //SEG814 [405] phi from form_control::@5 to form_control::@23 [phi:form_control::@5->form_control::@23] //SEG815 form_control::@23 //SEG816 form_control::@2 @@ -32324,7 +32353,6 @@ bitmap_line: { //SEG1289 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@4->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi //SEG1290 bitmap_line::@return - breturn: //SEG1291 [630] return rts //SEG1292 bitmap_line::@8 @@ -32346,7 +32374,7 @@ bitmap_line: { //SEG1303 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@8->bitmap_line_xdyi#3] -- register_copy //SEG1304 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@8->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi - jmp breturn + rts //SEG1305 bitmap_line::@7 b7: //SEG1306 [637] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 @@ -32377,7 +32405,7 @@ bitmap_line: { //SEG1319 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@10->bitmap_line_ydxd#3] -- register_copy //SEG1320 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@10->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd - jmp breturn + rts //SEG1321 bitmap_line::@9 b9: //SEG1322 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx @@ -32397,7 +32425,7 @@ bitmap_line: { //SEG1332 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@9->bitmap_line_xdyd#3] -- register_copy //SEG1333 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@9->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd - jmp breturn + rts //SEG1334 bitmap_line::@1 b1: //SEG1335 [651] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuxx_minus_vbuz2 @@ -32434,7 +32462,7 @@ bitmap_line: { //SEG1351 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@6->bitmap_line_ydxd#3] -- register_copy //SEG1352 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@6->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd - jmp breturn + rts //SEG1353 bitmap_line::@12 b12: //SEG1354 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 @@ -32454,7 +32482,7 @@ bitmap_line: { //SEG1364 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@12->bitmap_line_xdyd#3] -- register_copy //SEG1365 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@12->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd - jmp breturn + rts //SEG1366 bitmap_line::@11 b11: //SEG1367 [667] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 @@ -32483,7 +32511,7 @@ bitmap_line: { //SEG1380 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@14->bitmap_line_ydxi#3] -- register_copy //SEG1381 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@14->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi - jmp breturn + rts //SEG1382 bitmap_line::@13 b13: //SEG1383 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 @@ -32503,7 +32531,7 @@ bitmap_line: { //SEG1393 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy //SEG1394 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi - jmp breturn + rts } //SEG1395 bitmap_line_xdyi // bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) diff --git a/src/test/ref/c64dtv-gfxmodes.asm b/src/test/ref/c64dtv-gfxmodes.asm index 76fcace8a..e496af02c 100644 --- a/src/test/ref/c64dtv-gfxmodes.asm +++ b/src/test/ref/c64dtv-gfxmodes.asm @@ -184,7 +184,6 @@ menu: { cmp #0 beq b5 jsr mode_stdchar - breturn: rts b5: ldy #KEY_2 @@ -192,70 +191,70 @@ menu: { cmp #0 beq b6 jsr mode_ecmchar - jmp breturn + rts b6: ldy #KEY_3 jsr keyboard_key_pressed cmp #0 beq b7 jsr mode_mcchar - jmp breturn + rts b7: ldy #KEY_4 jsr keyboard_key_pressed cmp #0 beq b8 jsr mode_stdbitmap - jmp breturn + rts b8: ldy #KEY_6 jsr keyboard_key_pressed cmp #0 beq b9 jsr mode_hicolstdchar - jmp breturn + rts b9: ldy #KEY_7 jsr keyboard_key_pressed cmp #0 beq b10 jsr mode_hicolecmchar - jmp breturn + rts b10: ldy #KEY_8 jsr keyboard_key_pressed cmp #0 beq b11 jsr mode_hicolmcchar - jmp breturn + rts b11: ldy #KEY_A jsr keyboard_key_pressed cmp #0 beq b12 jsr mode_sixsfred2 - jmp breturn + rts b12: ldy #KEY_B jsr keyboard_key_pressed cmp #0 beq b13 jsr mode_twoplanebitmap - jmp breturn + rts b13: ldy #KEY_C jsr keyboard_key_pressed cmp #0 beq b14 jsr mode_sixsfred - jmp breturn + rts b14: ldy #KEY_D jsr keyboard_key_pressed cmp #0 beq b15 jsr mode_8bpppixelcell - jmp breturn + rts b15: ldy #KEY_E jsr keyboard_key_pressed @@ -264,7 +263,7 @@ menu: { jmp b4 !b4: jsr mode_8bppchunkybmm - jmp breturn + rts } //Chunky 8bpp Bitmap Mode (BMM = 0, ECM/MCM/HICOL/LINEAR/CHUNK/COLDIS = 1) // Resolution: 320x200 @@ -1579,7 +1578,6 @@ bitmap_line: { sta bitmap_line_ydxi.y1 sty bitmap_line_ydxi.yd jsr bitmap_line_ydxi - breturn: rts b8: stx bitmap_line_xdyi.x @@ -1587,7 +1585,7 @@ bitmap_line: { sta bitmap_line_xdyi.y sty bitmap_line_xdyi.yd jsr bitmap_line_xdyi - jmp breturn + rts b7: lda y1 sec @@ -1602,14 +1600,14 @@ bitmap_line: { sta bitmap_line_ydxd.y1 sty bitmap_line_ydxd.yd jsr bitmap_line_ydxd - jmp breturn + rts b9: stx bitmap_line_xdyd.x lda y1 sta bitmap_line_xdyd.y sty bitmap_line_xdyd.yd jsr bitmap_line_xdyd - jmp breturn + rts b1: txa sec @@ -1627,14 +1625,14 @@ bitmap_line: { sta bitmap_line_ydxd.y sty bitmap_line_ydxd.yd jsr bitmap_line_ydxd - jmp breturn + rts b12: lda x0 sta bitmap_line_xdyd.x stx bitmap_line_xdyd.x1 sty bitmap_line_xdyd.yd jsr bitmap_line_xdyd - jmp breturn + rts b11: lda y1 sec @@ -1647,14 +1645,14 @@ bitmap_line: { ldx x0 sty bitmap_line_ydxi.yd jsr bitmap_line_ydxi - jmp breturn + rts b13: lda x0 sta bitmap_line_xdyi.x stx bitmap_line_xdyi.x1 sty bitmap_line_xdyi.yd jsr bitmap_line_xdyi - jmp breturn + rts } // bitmap_line_xdyi(byte zeropage($a) x, byte zeropage($b) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyi: { diff --git a/src/test/ref/c64dtv-gfxmodes.log b/src/test/ref/c64dtv-gfxmodes.log index 167f659c2..3fb20e019 100644 --- a/src/test/ref/c64dtv-gfxmodes.log +++ b/src/test/ref/c64dtv-gfxmodes.log @@ -25160,8 +25160,26 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to b11 in beq b27 Skipping double jump to b1 in jmp b1_from_b18 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to b2 in bne b6 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_b18 to b3 @@ -25237,13 +25255,15 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction b3: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bbegin: +Removing instruction breturn: Removing instruction b27: +Removing instruction breturn: Removing instruction b6: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b11 Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [262] beq b4 to bne +Fixing long branch [261] beq b4 to bne FINAL SYMBOL TABLE (label) @1 @@ -26766,7 +26786,7 @@ reg byte a [ print_str_lines::ch#0 ] FINAL ASSEMBLER -Score: 2305587 +Score: 2305641 //SEG0 File Comments // Exploring C64DTV Screen Modes @@ -27023,7 +27043,6 @@ menu: { //SEG67 [40] call mode_stdchar jsr mode_stdchar //SEG68 menu::@return - breturn: //SEG69 [41] return rts //SEG70 [42] phi from menu::@30 to menu::@5 [phi:menu::@30->menu::@5] @@ -27044,7 +27063,7 @@ menu: { //SEG80 menu::@17 //SEG81 [48] call mode_ecmchar jsr mode_ecmchar - jmp breturn + rts //SEG82 [49] phi from menu::@31 to menu::@6 [phi:menu::@31->menu::@6] //SEG83 menu::@6 b6: @@ -27063,7 +27082,7 @@ menu: { //SEG92 menu::@18 //SEG93 [55] call mode_mcchar jsr mode_mcchar - jmp breturn + rts //SEG94 [56] phi from menu::@32 to menu::@7 [phi:menu::@32->menu::@7] //SEG95 menu::@7 b7: @@ -27082,7 +27101,7 @@ menu: { //SEG104 menu::@19 //SEG105 [62] call mode_stdbitmap jsr mode_stdbitmap - jmp breturn + rts //SEG106 [63] phi from menu::@33 to menu::@8 [phi:menu::@33->menu::@8] //SEG107 menu::@8 b8: @@ -27101,7 +27120,7 @@ menu: { //SEG116 menu::@20 //SEG117 [69] call mode_hicolstdchar jsr mode_hicolstdchar - jmp breturn + rts //SEG118 [70] phi from menu::@34 to menu::@9 [phi:menu::@34->menu::@9] //SEG119 menu::@9 b9: @@ -27120,7 +27139,7 @@ menu: { //SEG128 menu::@21 //SEG129 [76] call mode_hicolecmchar jsr mode_hicolecmchar - jmp breturn + rts //SEG130 [77] phi from menu::@35 to menu::@10 [phi:menu::@35->menu::@10] //SEG131 menu::@10 b10: @@ -27139,7 +27158,7 @@ menu: { //SEG140 menu::@22 //SEG141 [83] call mode_hicolmcchar jsr mode_hicolmcchar - jmp breturn + rts //SEG142 [84] phi from menu::@36 to menu::@11 [phi:menu::@36->menu::@11] //SEG143 menu::@11 b11: @@ -27158,7 +27177,7 @@ menu: { //SEG152 menu::@23 //SEG153 [90] call mode_sixsfred2 jsr mode_sixsfred2 - jmp breturn + rts //SEG154 [91] phi from menu::@37 to menu::@12 [phi:menu::@37->menu::@12] //SEG155 menu::@12 b12: @@ -27177,7 +27196,7 @@ menu: { //SEG164 menu::@24 //SEG165 [97] call mode_twoplanebitmap jsr mode_twoplanebitmap - jmp breturn + rts //SEG166 [98] phi from menu::@38 to menu::@13 [phi:menu::@38->menu::@13] //SEG167 menu::@13 b13: @@ -27196,7 +27215,7 @@ menu: { //SEG176 menu::@25 //SEG177 [104] call mode_sixsfred jsr mode_sixsfred - jmp breturn + rts //SEG178 [105] phi from menu::@39 to menu::@14 [phi:menu::@39->menu::@14] //SEG179 menu::@14 b14: @@ -27215,7 +27234,7 @@ menu: { //SEG188 menu::@26 //SEG189 [111] call mode_8bpppixelcell jsr mode_8bpppixelcell - jmp breturn + rts //SEG190 [112] phi from menu::@40 to menu::@15 [phi:menu::@40->menu::@15] //SEG191 menu::@15 b15: @@ -27236,7 +27255,7 @@ menu: { //SEG200 menu::@27 //SEG201 [118] call mode_8bppchunkybmm jsr mode_8bppchunkybmm - jmp breturn + rts } //SEG202 mode_8bppchunkybmm //Chunky 8bpp Bitmap Mode (BMM = 0, ECM/MCM/HICOL/LINEAR/CHUNK/COLDIS = 1) @@ -29471,7 +29490,6 @@ bitmap_line: { //SEG1120 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@4->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi //SEG1121 bitmap_line::@return - breturn: //SEG1122 [603] return rts //SEG1123 bitmap_line::@8 @@ -29493,7 +29511,7 @@ bitmap_line: { //SEG1134 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@8->bitmap_line_xdyi#3] -- register_copy //SEG1135 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@8->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi - jmp breturn + rts //SEG1136 bitmap_line::@7 b7: //SEG1137 [610] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 @@ -29524,7 +29542,7 @@ bitmap_line: { //SEG1150 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@10->bitmap_line_ydxd#3] -- register_copy //SEG1151 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@10->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd - jmp breturn + rts //SEG1152 bitmap_line::@9 b9: //SEG1153 [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx @@ -29544,7 +29562,7 @@ bitmap_line: { //SEG1163 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@9->bitmap_line_xdyd#3] -- register_copy //SEG1164 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@9->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd - jmp breturn + rts //SEG1165 bitmap_line::@1 b1: //SEG1166 [624] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuxx_minus_vbuz2 @@ -29581,7 +29599,7 @@ bitmap_line: { //SEG1182 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@6->bitmap_line_ydxd#3] -- register_copy //SEG1183 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@6->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd - jmp breturn + rts //SEG1184 bitmap_line::@12 b12: //SEG1185 [634] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 @@ -29601,7 +29619,7 @@ bitmap_line: { //SEG1195 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@12->bitmap_line_xdyd#3] -- register_copy //SEG1196 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@12->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd - jmp breturn + rts //SEG1197 bitmap_line::@11 b11: //SEG1198 [640] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 @@ -29630,7 +29648,7 @@ bitmap_line: { //SEG1211 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@14->bitmap_line_ydxi#3] -- register_copy //SEG1212 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@14->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi - jmp breturn + rts //SEG1213 bitmap_line::@13 b13: //SEG1214 [648] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 @@ -29650,7 +29668,7 @@ bitmap_line: { //SEG1224 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy //SEG1225 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi - jmp breturn + rts } //SEG1226 bitmap_line_xdyi // bitmap_line_xdyi(byte zeropage($a) x, byte zeropage($b) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) diff --git a/src/test/ref/cast-precedence-problem.asm b/src/test/ref/cast-precedence-problem.asm index a4cd572b2..d0d46735c 100644 --- a/src/test/ref/cast-precedence-problem.asm +++ b/src/test/ref/cast-precedence-problem.asm @@ -20,10 +20,9 @@ main: { beq b1 lda #2 sta BGCOL - breturn: rts b1: lda #5 sta BGCOL - jmp breturn + rts } diff --git a/src/test/ref/cast-precedence-problem.log b/src/test/ref/cast-precedence-problem.log index 401a337bb..6576aa747 100644 --- a/src/test/ref/cast-precedence-problem.log +++ b/src/test/ref/cast-precedence-problem.log @@ -320,7 +320,10 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -351,7 +354,7 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER -Score: 43 +Score: 46 //SEG0 File Comments // Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 @@ -391,7 +394,6 @@ main: { lda #2 sta BGCOL //SEG15 main::@return - breturn: //SEG16 [8] return rts //SEG17 main::@1 @@ -399,6 +401,6 @@ main: { //SEG18 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - jmp breturn + rts } diff --git a/src/test/ref/complex/tetris/tetris.asm b/src/test/ref/complex/tetris/tetris.asm index b51a0971c..28f24bc4e 100644 --- a/src/test/ref/complex/tetris/tetris.asm +++ b/src/test/ref/complex/tetris/tetris.asm @@ -587,7 +587,6 @@ play_movement: { lda game_over cmp #0 beq b1 - breturn: rts b1: lda key_event @@ -600,7 +599,7 @@ play_movement: { clc adc return sta return - jmp breturn + rts } // Rotate the current piece based on key-presses // Return non-zero if a render is needed @@ -613,7 +612,6 @@ play_move_rotate: { beq b2 b4: lda #0 - breturn: rts b2: lax current_orientation @@ -642,7 +640,7 @@ play_move_rotate: { adc current_piece+1 sta current_piece_gfx+1 lda #1 - jmp breturn + rts b1: lax current_orientation axs #$10 @@ -698,7 +696,6 @@ play_collision: { cmp #2*PLAYFIELD_LINES bcc b4 lda #COLLISION_BOTTOM - breturn: rts b4: lda #$80 @@ -706,20 +703,20 @@ play_collision: { cmp #0 beq b5 lda #COLLISION_LEFT - jmp breturn + rts b5: lda col cmp #PLAYFIELD_COLS bcc b6 lda #COLLISION_RIGHT - jmp breturn + rts b6: ldy col lda (playfield_line),y cmp #0 beq b3 lda #COLLISION_PLAYFIELD - jmp breturn + rts b3: inc col inx @@ -734,7 +731,7 @@ play_collision: { cmp l bne b9 lda #COLLISION_NONE - jmp breturn + rts b9: lda i sta i_11 @@ -769,10 +766,9 @@ play_move_leftright: { inc current_xpos b2: lda #1 - jmp breturn + rts b3: lda #0 - breturn: rts b1: ldx current_xpos @@ -850,10 +846,9 @@ play_move_down: { lda #0 sta current_movedown_counter ldx #1 - jmp breturn + rts b5: ldx #0 - breturn: rts b10: inc current_ypos @@ -1159,10 +1154,9 @@ keyboard_event_get: { dec keyboard_events_size ldy keyboard_events_size ldx keyboard_events,y - jmp breturn + rts b1: ldx #$ff - breturn: rts } // Scans the entire matrix to determine which keys have been pressed/depressed. diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log index a082c1309..e5b5421b7 100644 --- a/src/test/ref/complex/tetris/tetris.log +++ b/src/test/ref/complex/tetris/tetris.log @@ -22216,8 +22216,17 @@ Removing instruction b6: Removing instruction b7: Removing instruction b11: Succesful ASM optimization Pass5UnusedLabelElimination +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to b1 in bne b5 Skipping double jump to b3 in bne b9 +Replacing jump to rts with rts in jmp breturn Skipping double jump to b9 in bne b9_from_b10 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_render_score to b2 @@ -22254,8 +22263,14 @@ Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction breturn: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction breturn: Removing instruction b5: Removing instruction b9: +Removing instruction breturn: Removing instruction b5: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b1 @@ -23592,7 +23607,7 @@ reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 3348864 +Score: 3348891 //SEG0 File Comments // Tetris Game for the Commodore 64 @@ -24590,7 +24605,6 @@ play_movement: { //SEG404 [169] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy //SEG405 [169] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy //SEG406 play_movement::@return - breturn: //SEG407 [170] return rts //SEG408 play_movement::@1 @@ -24617,7 +24631,7 @@ play_movement: { clc adc return sta return - jmp breturn + rts } //SEG421 play_move_rotate // Rotate the current piece based on key-presses @@ -24639,7 +24653,6 @@ play_move_rotate: { //SEG428 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 //SEG429 play_move_rotate::@return - breturn: //SEG430 [184] return rts //SEG431 play_move_rotate::@2 @@ -24696,7 +24709,7 @@ play_move_rotate: { //SEG456 [183] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy //SEG457 [183] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 - jmp breturn + rts //SEG458 play_move_rotate::@1 b1: //SEG459 [198] (byte/signed word/word/dword/signed dword~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 -- vbuxx=vbuz1_minus_vbuc1 @@ -24777,7 +24790,6 @@ play_collision: { //SEG481 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM //SEG482 play_collision::@return - breturn: //SEG483 [211] return rts //SEG484 play_collision::@4 @@ -24791,7 +24803,7 @@ play_collision: { //SEG487 [210] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] //SEG488 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT - jmp breturn + rts //SEG489 play_collision::@5 b5: //SEG490 [214] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 @@ -24801,7 +24813,7 @@ play_collision: { //SEG491 [210] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] //SEG492 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT - jmp breturn + rts //SEG493 play_collision::@6 b6: //SEG494 [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 @@ -24812,7 +24824,7 @@ play_collision: { //SEG495 [210] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] //SEG496 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD - jmp breturn + rts //SEG497 play_collision::@3 b3: //SEG498 [216] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 @@ -24837,7 +24849,7 @@ play_collision: { //SEG505 [210] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] //SEG506 [210] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE - jmp breturn + rts //SEG507 play_collision::@9 b9: //SEG508 [222] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 @@ -24908,14 +24920,13 @@ play_move_leftright: { //SEG541 [235] phi (byte) current_xpos#26 = (byte) current_xpos#6 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy //SEG542 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 - jmp breturn + rts //SEG543 [235] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return] b3: //SEG544 [235] phi (byte) current_xpos#26 = (byte) current_xpos#22 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy //SEG545 [235] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 //SEG546 play_move_leftright::@return - breturn: //SEG547 [236] return rts //SEG548 play_move_leftright::@1 @@ -25107,7 +25118,7 @@ play_move_down: { sta current_movedown_counter //SEG660 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@11->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #1 - jmp breturn + rts //SEG661 [281] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return] b5: //SEG662 [281] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy @@ -25127,7 +25138,6 @@ play_move_down: { //SEG676 [281] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@3->play_move_down::@return#14] -- vbuxx=vbuc1 ldx #0 //SEG677 play_move_down::@return - breturn: //SEG678 [282] return rts //SEG679 play_move_down::@10 @@ -25658,14 +25668,13 @@ keyboard_event_get: { //SEG900 [387] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] //SEG901 [387] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy //SEG902 [387] 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 - jmp breturn + rts //SEG903 [387] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: //SEG904 [387] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy //SEG905 [387] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 ldx #$ff //SEG906 keyboard_event_get::@return - breturn: //SEG907 [388] return rts } diff --git a/src/test/ref/deep-nesting.asm b/src/test/ref/deep-nesting.asm new file mode 100644 index 000000000..0da9881d9 --- /dev/null +++ b/src/test/ref/deep-nesting.asm @@ -0,0 +1,510 @@ +// Test that the compiler handles deep nesting well -- mainly a performance issue. +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +main: { + .label screen = $400 + jsr f1 + lda #f1.return + sta screen + rts +} +f1: { + .label x = 0 + .label return = f2.return+1 + jsr f2 + rts +} +f2: { + .label return = f3.return+1 + jsr f3 + rts +} +f3: { + .label return = f4.return+1 + jsr f4 + rts +} +f4: { + .label return = f5.return+1 + jsr f5 + rts +} +f5: { + .label return = f6.return+1 + jsr f6 + rts +} +f6: { + .label return = f7.return+1 + jsr f7 + rts +} +f7: { + .label return = f8.return+1 + jsr f8 + rts +} +f8: { + .label return = f9.return+1 + jsr f9 + rts +} +f9: { + .label return = f10.return+1 + jsr f10 + rts +} +f10: { + .label return = f11.return+1 + jsr f11 + rts +} +f11: { + .label return = f12.return+1 + jsr f12 + rts +} +f12: { + .label return = f13.return+1 + jsr f13 + rts +} +f13: { + .label return = f14.return+1 + jsr f14 + rts +} +f14: { + .label return = f15.return+1 + jsr f15 + rts +} +f15: { + .label return = f16.return+1 + jsr f16 + rts +} +f16: { + .label return = f17.return+1 + jsr f17 + rts +} +f17: { + .label return = f18.return+1 + jsr f18 + rts +} +f18: { + .label return = f19.return+1 + jsr f19 + rts +} +f19: { + .label return = f20.return+1 + jsr f20 + rts +} +f20: { + .label return = f21.return+1 + jsr f21 + rts +} +f21: { + .label return = f22.return+1 + jsr f22 + rts +} +f22: { + .label return = f23.return+1 + jsr f23 + rts +} +f23: { + .label return = f24.return+1 + jsr f24 + rts +} +f24: { + .label return = f25.return+1 + jsr f25 + rts +} +f25: { + .label return = f26.return+1 + jsr f26 + rts +} +f26: { + .label return = f27.return+1 + jsr f27 + rts +} +f27: { + .label return = f28.return+1 + jsr f28 + rts +} +f28: { + .label return = f29.return+1 + jsr f29 + rts +} +f29: { + .label return = f30.return+1 + jsr f30 + rts +} +f30: { + .label return = f31.return+1 + jsr f31 + rts +} +f31: { + .label return = f32.return+1 + jsr f32 + rts +} +f32: { + .label return = f33.return+1 + jsr f33 + rts +} +f33: { + .label return = f34.return+1 + jsr f34 + rts +} +f34: { + .label return = f35.return+1 + jsr f35 + rts +} +f35: { + .label return = f36.return+1 + jsr f36 + rts +} +f36: { + .label return = f37.return+1 + jsr f37 + rts +} +f37: { + .label return = f38.return+1 + jsr f38 + rts +} +f38: { + .label return = f39.return+1 + jsr f39 + rts +} +f39: { + .label return = f40.return+1 + jsr f40 + rts +} +f40: { + .label return = f41.return+1 + jsr f41 + rts +} +f41: { + .label return = f42.return+1 + jsr f42 + rts +} +f42: { + .label return = f43.return+1 + jsr f43 + rts +} +f43: { + .label return = f44.return+1 + jsr f44 + rts +} +f44: { + .label return = f45.return+1 + jsr f45 + rts +} +f45: { + .label return = f46.return+1 + jsr f46 + rts +} +f46: { + .label return = f47.return+1 + jsr f47 + rts +} +f47: { + .label return = f48.return+1 + jsr f48 + rts +} +f48: { + .label return = f49.return+1 + jsr f49 + rts +} +f49: { + .label return = f50.return+1 + jsr f50 + rts +} +f50: { + .label return = f51.return+1 + jsr f51 + rts +} +f51: { + .label return = f52.return+1 + jsr f52 + rts +} +f52: { + .label return = f53.return+1 + jsr f53 + rts +} +f53: { + .label return = f54.return+1 + jsr f54 + rts +} +f54: { + .label return = f55.return+1 + jsr f55 + rts +} +f55: { + .label return = f56.return+1 + jsr f56 + rts +} +f56: { + .label return = f57.return+1 + jsr f57 + rts +} +f57: { + .label return = f58.return+1 + jsr f58 + rts +} +f58: { + .label return = f59.return+1 + jsr f59 + rts +} +f59: { + .label return = f60.return+1 + jsr f60 + rts +} +f60: { + .label return = f61.return+1 + jsr f61 + rts +} +f61: { + .label return = f62.return+1 + jsr f62 + rts +} +f62: { + .label return = f63.return+1 + jsr f63 + rts +} +f63: { + .label return = f64.return+1 + jsr f64 + rts +} +f64: { + .label return = f65.return+1 + jsr f65 + rts +} +f65: { + .label return = f66.return+1 + jsr f66 + rts +} +f66: { + .label return = f67.return+1 + jsr f67 + rts +} +f67: { + .label return = f68.return+1 + jsr f68 + rts +} +f68: { + .label return = f69.return+1 + jsr f69 + rts +} +f69: { + .label return = f70.return+1 + jsr f70 + rts +} +f70: { + .label return = f71.return+1 + jsr f71 + rts +} +f71: { + .label return = f72.return+1 + jsr f72 + rts +} +f72: { + .label return = f73.return+1 + jsr f73 + rts +} +f73: { + .label return = f74.return+1 + jsr f74 + rts +} +f74: { + .label return = f75.return+1 + jsr f75 + rts +} +f75: { + .label return = f76.return+1 + jsr f76 + rts +} +f76: { + .label return = f77.return+1 + jsr f77 + rts +} +f77: { + .label return = f78.return+1 + jsr f78 + rts +} +f78: { + .label return = f79.return+1 + jsr f79 + rts +} +f79: { + .label return = f80.return+1 + jsr f80 + rts +} +f80: { + .label return = f81.return+1 + jsr f81 + rts +} +f81: { + .label return = f82.return+1 + jsr f82 + rts +} +f82: { + .label return = f83.return+1 + jsr f83 + rts +} +f83: { + .label return = f84.return+1 + jsr f84 + rts +} +f84: { + .label return = f85.return+1 + jsr f85 + rts +} +f85: { + .label return = f86.return+1 + jsr f86 + rts +} +f86: { + .label return = f87.return+1 + jsr f87 + rts +} +f87: { + .label return = f88.return+1 + jsr f88 + rts +} +f88: { + .label return = f89.return+1 + jsr f89 + rts +} +f89: { + .label return = f90.return+1 + jsr f90 + rts +} +f90: { + .label return = f91.return+1 + jsr f91 + rts +} +f91: { + .label return = f92.return+1 + jsr f92 + rts +} +f92: { + .label return = f93.return+1 + jsr f93 + rts +} +f93: { + .label return = f94.return+1 + jsr f94 + rts +} +f94: { + .label return = f95.return+1 + jsr f95 + rts +} +f95: { + .label return = f96.return+1 + jsr f96 + rts +} +f96: { + .label return = f97.return+1 + jsr f97 + rts +} +f97: { + .label return = f98.return+1 + jsr f98 + rts +} +f98: { + .label return = f99.return+1 + jsr f99 + rts +} +f99: { + .label return = f1.x+1 + jsr f100 + rts +} +f100: { + rts +} diff --git a/src/test/ref/deep-nesting.cfg b/src/test/ref/deep-nesting.cfg new file mode 100644 index 000000000..c97b46869 --- /dev/null +++ b/src/test/ref/deep-nesting.cfg @@ -0,0 +1,718 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] phi() + [5] call f1 + to:main::@1 +main::@1: scope:[main] from main + [6] *((const byte*) main::screen#0) ← (const byte) f1::return#1 + to:main::@return +main::@return: scope:[main] from main::@1 + [7] return + to:@return +f1: scope:[f1] from main + [8] phi() + [9] call f2 + to:f1::@return +f1::@return: scope:[f1] from f1 + [10] return + to:@return +f2: scope:[f2] from f1 + [11] phi() + [12] call f3 + to:f2::@return +f2::@return: scope:[f2] from f2 + [13] return + to:@return +f3: scope:[f3] from f2 + [14] phi() + [15] call f4 + to:f3::@return +f3::@return: scope:[f3] from f3 + [16] return + to:@return +f4: scope:[f4] from f3 + [17] phi() + [18] call f5 + to:f4::@return +f4::@return: scope:[f4] from f4 + [19] return + to:@return +f5: scope:[f5] from f4 + [20] phi() + [21] call f6 + to:f5::@return +f5::@return: scope:[f5] from f5 + [22] return + to:@return +f6: scope:[f6] from f5 + [23] phi() + [24] call f7 + to:f6::@return +f6::@return: scope:[f6] from f6 + [25] return + to:@return +f7: scope:[f7] from f6 + [26] phi() + [27] call f8 + to:f7::@return +f7::@return: scope:[f7] from f7 + [28] return + to:@return +f8: scope:[f8] from f7 + [29] phi() + [30] call f9 + to:f8::@return +f8::@return: scope:[f8] from f8 + [31] return + to:@return +f9: scope:[f9] from f8 + [32] phi() + [33] call f10 + to:f9::@return +f9::@return: scope:[f9] from f9 + [34] return + to:@return +f10: scope:[f10] from f9 + [35] phi() + [36] call f11 + to:f10::@return +f10::@return: scope:[f10] from f10 + [37] return + to:@return +f11: scope:[f11] from f10 + [38] phi() + [39] call f12 + to:f11::@return +f11::@return: scope:[f11] from f11 + [40] return + to:@return +f12: scope:[f12] from f11 + [41] phi() + [42] call f13 + to:f12::@return +f12::@return: scope:[f12] from f12 + [43] return + to:@return +f13: scope:[f13] from f12 + [44] phi() + [45] call f14 + to:f13::@return +f13::@return: scope:[f13] from f13 + [46] return + to:@return +f14: scope:[f14] from f13 + [47] phi() + [48] call f15 + to:f14::@return +f14::@return: scope:[f14] from f14 + [49] return + to:@return +f15: scope:[f15] from f14 + [50] phi() + [51] call f16 + to:f15::@return +f15::@return: scope:[f15] from f15 + [52] return + to:@return +f16: scope:[f16] from f15 + [53] phi() + [54] call f17 + to:f16::@return +f16::@return: scope:[f16] from f16 + [55] return + to:@return +f17: scope:[f17] from f16 + [56] phi() + [57] call f18 + to:f17::@return +f17::@return: scope:[f17] from f17 + [58] return + to:@return +f18: scope:[f18] from f17 + [59] phi() + [60] call f19 + to:f18::@return +f18::@return: scope:[f18] from f18 + [61] return + to:@return +f19: scope:[f19] from f18 + [62] phi() + [63] call f20 + to:f19::@return +f19::@return: scope:[f19] from f19 + [64] return + to:@return +f20: scope:[f20] from f19 + [65] phi() + [66] call f21 + to:f20::@return +f20::@return: scope:[f20] from f20 + [67] return + to:@return +f21: scope:[f21] from f20 + [68] phi() + [69] call f22 + to:f21::@return +f21::@return: scope:[f21] from f21 + [70] return + to:@return +f22: scope:[f22] from f21 + [71] phi() + [72] call f23 + to:f22::@return +f22::@return: scope:[f22] from f22 + [73] return + to:@return +f23: scope:[f23] from f22 + [74] phi() + [75] call f24 + to:f23::@return +f23::@return: scope:[f23] from f23 + [76] return + to:@return +f24: scope:[f24] from f23 + [77] phi() + [78] call f25 + to:f24::@return +f24::@return: scope:[f24] from f24 + [79] return + to:@return +f25: scope:[f25] from f24 + [80] phi() + [81] call f26 + to:f25::@return +f25::@return: scope:[f25] from f25 + [82] return + to:@return +f26: scope:[f26] from f25 + [83] phi() + [84] call f27 + to:f26::@return +f26::@return: scope:[f26] from f26 + [85] return + to:@return +f27: scope:[f27] from f26 + [86] phi() + [87] call f28 + to:f27::@return +f27::@return: scope:[f27] from f27 + [88] return + to:@return +f28: scope:[f28] from f27 + [89] phi() + [90] call f29 + to:f28::@return +f28::@return: scope:[f28] from f28 + [91] return + to:@return +f29: scope:[f29] from f28 + [92] phi() + [93] call f30 + to:f29::@return +f29::@return: scope:[f29] from f29 + [94] return + to:@return +f30: scope:[f30] from f29 + [95] phi() + [96] call f31 + to:f30::@return +f30::@return: scope:[f30] from f30 + [97] return + to:@return +f31: scope:[f31] from f30 + [98] phi() + [99] call f32 + to:f31::@return +f31::@return: scope:[f31] from f31 + [100] return + to:@return +f32: scope:[f32] from f31 + [101] phi() + [102] call f33 + to:f32::@return +f32::@return: scope:[f32] from f32 + [103] return + to:@return +f33: scope:[f33] from f32 + [104] phi() + [105] call f34 + to:f33::@return +f33::@return: scope:[f33] from f33 + [106] return + to:@return +f34: scope:[f34] from f33 + [107] phi() + [108] call f35 + to:f34::@return +f34::@return: scope:[f34] from f34 + [109] return + to:@return +f35: scope:[f35] from f34 + [110] phi() + [111] call f36 + to:f35::@return +f35::@return: scope:[f35] from f35 + [112] return + to:@return +f36: scope:[f36] from f35 + [113] phi() + [114] call f37 + to:f36::@return +f36::@return: scope:[f36] from f36 + [115] return + to:@return +f37: scope:[f37] from f36 + [116] phi() + [117] call f38 + to:f37::@return +f37::@return: scope:[f37] from f37 + [118] return + to:@return +f38: scope:[f38] from f37 + [119] phi() + [120] call f39 + to:f38::@return +f38::@return: scope:[f38] from f38 + [121] return + to:@return +f39: scope:[f39] from f38 + [122] phi() + [123] call f40 + to:f39::@return +f39::@return: scope:[f39] from f39 + [124] return + to:@return +f40: scope:[f40] from f39 + [125] phi() + [126] call f41 + to:f40::@return +f40::@return: scope:[f40] from f40 + [127] return + to:@return +f41: scope:[f41] from f40 + [128] phi() + [129] call f42 + to:f41::@return +f41::@return: scope:[f41] from f41 + [130] return + to:@return +f42: scope:[f42] from f41 + [131] phi() + [132] call f43 + to:f42::@return +f42::@return: scope:[f42] from f42 + [133] return + to:@return +f43: scope:[f43] from f42 + [134] phi() + [135] call f44 + to:f43::@return +f43::@return: scope:[f43] from f43 + [136] return + to:@return +f44: scope:[f44] from f43 + [137] phi() + [138] call f45 + to:f44::@return +f44::@return: scope:[f44] from f44 + [139] return + to:@return +f45: scope:[f45] from f44 + [140] phi() + [141] call f46 + to:f45::@return +f45::@return: scope:[f45] from f45 + [142] return + to:@return +f46: scope:[f46] from f45 + [143] phi() + [144] call f47 + to:f46::@return +f46::@return: scope:[f46] from f46 + [145] return + to:@return +f47: scope:[f47] from f46 + [146] phi() + [147] call f48 + to:f47::@return +f47::@return: scope:[f47] from f47 + [148] return + to:@return +f48: scope:[f48] from f47 + [149] phi() + [150] call f49 + to:f48::@return +f48::@return: scope:[f48] from f48 + [151] return + to:@return +f49: scope:[f49] from f48 + [152] phi() + [153] call f50 + to:f49::@return +f49::@return: scope:[f49] from f49 + [154] return + to:@return +f50: scope:[f50] from f49 + [155] phi() + [156] call f51 + to:f50::@return +f50::@return: scope:[f50] from f50 + [157] return + to:@return +f51: scope:[f51] from f50 + [158] phi() + [159] call f52 + to:f51::@return +f51::@return: scope:[f51] from f51 + [160] return + to:@return +f52: scope:[f52] from f51 + [161] phi() + [162] call f53 + to:f52::@return +f52::@return: scope:[f52] from f52 + [163] return + to:@return +f53: scope:[f53] from f52 + [164] phi() + [165] call f54 + to:f53::@return +f53::@return: scope:[f53] from f53 + [166] return + to:@return +f54: scope:[f54] from f53 + [167] phi() + [168] call f55 + to:f54::@return +f54::@return: scope:[f54] from f54 + [169] return + to:@return +f55: scope:[f55] from f54 + [170] phi() + [171] call f56 + to:f55::@return +f55::@return: scope:[f55] from f55 + [172] return + to:@return +f56: scope:[f56] from f55 + [173] phi() + [174] call f57 + to:f56::@return +f56::@return: scope:[f56] from f56 + [175] return + to:@return +f57: scope:[f57] from f56 + [176] phi() + [177] call f58 + to:f57::@return +f57::@return: scope:[f57] from f57 + [178] return + to:@return +f58: scope:[f58] from f57 + [179] phi() + [180] call f59 + to:f58::@return +f58::@return: scope:[f58] from f58 + [181] return + to:@return +f59: scope:[f59] from f58 + [182] phi() + [183] call f60 + to:f59::@return +f59::@return: scope:[f59] from f59 + [184] return + to:@return +f60: scope:[f60] from f59 + [185] phi() + [186] call f61 + to:f60::@return +f60::@return: scope:[f60] from f60 + [187] return + to:@return +f61: scope:[f61] from f60 + [188] phi() + [189] call f62 + to:f61::@return +f61::@return: scope:[f61] from f61 + [190] return + to:@return +f62: scope:[f62] from f61 + [191] phi() + [192] call f63 + to:f62::@return +f62::@return: scope:[f62] from f62 + [193] return + to:@return +f63: scope:[f63] from f62 + [194] phi() + [195] call f64 + to:f63::@return +f63::@return: scope:[f63] from f63 + [196] return + to:@return +f64: scope:[f64] from f63 + [197] phi() + [198] call f65 + to:f64::@return +f64::@return: scope:[f64] from f64 + [199] return + to:@return +f65: scope:[f65] from f64 + [200] phi() + [201] call f66 + to:f65::@return +f65::@return: scope:[f65] from f65 + [202] return + to:@return +f66: scope:[f66] from f65 + [203] phi() + [204] call f67 + to:f66::@return +f66::@return: scope:[f66] from f66 + [205] return + to:@return +f67: scope:[f67] from f66 + [206] phi() + [207] call f68 + to:f67::@return +f67::@return: scope:[f67] from f67 + [208] return + to:@return +f68: scope:[f68] from f67 + [209] phi() + [210] call f69 + to:f68::@return +f68::@return: scope:[f68] from f68 + [211] return + to:@return +f69: scope:[f69] from f68 + [212] phi() + [213] call f70 + to:f69::@return +f69::@return: scope:[f69] from f69 + [214] return + to:@return +f70: scope:[f70] from f69 + [215] phi() + [216] call f71 + to:f70::@return +f70::@return: scope:[f70] from f70 + [217] return + to:@return +f71: scope:[f71] from f70 + [218] phi() + [219] call f72 + to:f71::@return +f71::@return: scope:[f71] from f71 + [220] return + to:@return +f72: scope:[f72] from f71 + [221] phi() + [222] call f73 + to:f72::@return +f72::@return: scope:[f72] from f72 + [223] return + to:@return +f73: scope:[f73] from f72 + [224] phi() + [225] call f74 + to:f73::@return +f73::@return: scope:[f73] from f73 + [226] return + to:@return +f74: scope:[f74] from f73 + [227] phi() + [228] call f75 + to:f74::@return +f74::@return: scope:[f74] from f74 + [229] return + to:@return +f75: scope:[f75] from f74 + [230] phi() + [231] call f76 + to:f75::@return +f75::@return: scope:[f75] from f75 + [232] return + to:@return +f76: scope:[f76] from f75 + [233] phi() + [234] call f77 + to:f76::@return +f76::@return: scope:[f76] from f76 + [235] return + to:@return +f77: scope:[f77] from f76 + [236] phi() + [237] call f78 + to:f77::@return +f77::@return: scope:[f77] from f77 + [238] return + to:@return +f78: scope:[f78] from f77 + [239] phi() + [240] call f79 + to:f78::@return +f78::@return: scope:[f78] from f78 + [241] return + to:@return +f79: scope:[f79] from f78 + [242] phi() + [243] call f80 + to:f79::@return +f79::@return: scope:[f79] from f79 + [244] return + to:@return +f80: scope:[f80] from f79 + [245] phi() + [246] call f81 + to:f80::@return +f80::@return: scope:[f80] from f80 + [247] return + to:@return +f81: scope:[f81] from f80 + [248] phi() + [249] call f82 + to:f81::@return +f81::@return: scope:[f81] from f81 + [250] return + to:@return +f82: scope:[f82] from f81 + [251] phi() + [252] call f83 + to:f82::@return +f82::@return: scope:[f82] from f82 + [253] return + to:@return +f83: scope:[f83] from f82 + [254] phi() + [255] call f84 + to:f83::@return +f83::@return: scope:[f83] from f83 + [256] return + to:@return +f84: scope:[f84] from f83 + [257] phi() + [258] call f85 + to:f84::@return +f84::@return: scope:[f84] from f84 + [259] return + to:@return +f85: scope:[f85] from f84 + [260] phi() + [261] call f86 + to:f85::@return +f85::@return: scope:[f85] from f85 + [262] return + to:@return +f86: scope:[f86] from f85 + [263] phi() + [264] call f87 + to:f86::@return +f86::@return: scope:[f86] from f86 + [265] return + to:@return +f87: scope:[f87] from f86 + [266] phi() + [267] call f88 + to:f87::@return +f87::@return: scope:[f87] from f87 + [268] return + to:@return +f88: scope:[f88] from f87 + [269] phi() + [270] call f89 + to:f88::@return +f88::@return: scope:[f88] from f88 + [271] return + to:@return +f89: scope:[f89] from f88 + [272] phi() + [273] call f90 + to:f89::@return +f89::@return: scope:[f89] from f89 + [274] return + to:@return +f90: scope:[f90] from f89 + [275] phi() + [276] call f91 + to:f90::@return +f90::@return: scope:[f90] from f90 + [277] return + to:@return +f91: scope:[f91] from f90 + [278] phi() + [279] call f92 + to:f91::@return +f91::@return: scope:[f91] from f91 + [280] return + to:@return +f92: scope:[f92] from f91 + [281] phi() + [282] call f93 + to:f92::@return +f92::@return: scope:[f92] from f92 + [283] return + to:@return +f93: scope:[f93] from f92 + [284] phi() + [285] call f94 + to:f93::@return +f93::@return: scope:[f93] from f93 + [286] return + to:@return +f94: scope:[f94] from f93 + [287] phi() + [288] call f95 + to:f94::@return +f94::@return: scope:[f94] from f94 + [289] return + to:@return +f95: scope:[f95] from f94 + [290] phi() + [291] call f96 + to:f95::@return +f95::@return: scope:[f95] from f95 + [292] return + to:@return +f96: scope:[f96] from f95 + [293] phi() + [294] call f97 + to:f96::@return +f96::@return: scope:[f96] from f96 + [295] return + to:@return +f97: scope:[f97] from f96 + [296] phi() + [297] call f98 + to:f97::@return +f97::@return: scope:[f97] from f97 + [298] return + to:@return +f98: scope:[f98] from f97 + [299] phi() + [300] call f99 + to:f98::@return +f98::@return: scope:[f98] from f98 + [301] return + to:@return +f99: scope:[f99] from f98 + [302] phi() + [303] call f100 + to:f99::@return +f99::@return: scope:[f99] from f99 + [304] return + to:@return +f100: scope:[f100] from f99 + [305] phi() + to:f100::@return +f100::@return: scope:[f100] from f100 + [306] return + to:@return diff --git a/src/test/ref/deep-nesting.log b/src/test/ref/deep-nesting.log new file mode 100644 index 000000000..ffc6fcf5b --- /dev/null +++ b/src/test/ref/deep-nesting.log @@ -0,0 +1,10834 @@ +Identified constant variable (byte*) main::screen + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@101 +main: scope:[main] from @101 + (byte*) main::screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400 + (byte) main::reverse#0 ← (byte/word/signed word/dword/signed dword) $80 + (byte) f1::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call f1 + (byte) f1::return#0 ← (byte) f1::return#2 + to:main::@1 +main::@1: scope:[main] from main + (byte) f1::return#3 ← phi( main/(byte) f1::return#0 ) + (byte~) main::$0 ← (byte) f1::return#3 + *((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +f1: scope:[f1] from main + (byte) f1::x#1 ← phi( main/(byte) f1::x#0 ) + (byte) f2::x#0 ← (byte) f1::x#1 + call f2 + (byte) f2::return#0 ← (byte) f2::return#2 + to:f1::@2 +f1::@2: scope:[f1] from f1 + (byte) f2::return#3 ← phi( f1/(byte) f2::return#0 ) + (byte~) f1::$0 ← (byte) f2::return#3 + (byte/signed word/word/dword/signed dword~) f1::$1 ← (byte~) f1::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f1::return#1 ← (byte/signed word/word/dword/signed dword~) f1::$1 + to:f1::@return +f1::@return: scope:[f1] from f1::@2 + (byte) f1::return#4 ← phi( f1::@2/(byte) f1::return#1 ) + (byte) f1::return#2 ← (byte) f1::return#4 + return + to:@return +f2: scope:[f2] from f1 + (byte) f2::x#1 ← phi( f1/(byte) f2::x#0 ) + (byte) f3::x#0 ← (byte) f2::x#1 + call f3 + (byte) f3::return#0 ← (byte) f3::return#2 + to:f2::@2 +f2::@2: scope:[f2] from f2 + (byte) f3::return#3 ← phi( f2/(byte) f3::return#0 ) + (byte~) f2::$0 ← (byte) f3::return#3 + (byte/signed word/word/dword/signed dword~) f2::$1 ← (byte~) f2::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f2::return#1 ← (byte/signed word/word/dword/signed dword~) f2::$1 + to:f2::@return +f2::@return: scope:[f2] from f2::@2 + (byte) f2::return#4 ← phi( f2::@2/(byte) f2::return#1 ) + (byte) f2::return#2 ← (byte) f2::return#4 + return + to:@return +f3: scope:[f3] from f2 + (byte) f3::x#1 ← phi( f2/(byte) f3::x#0 ) + (byte) f4::x#0 ← (byte) f3::x#1 + call f4 + (byte) f4::return#0 ← (byte) f4::return#2 + to:f3::@2 +f3::@2: scope:[f3] from f3 + (byte) f4::return#3 ← phi( f3/(byte) f4::return#0 ) + (byte~) f3::$0 ← (byte) f4::return#3 + (byte/signed word/word/dword/signed dword~) f3::$1 ← (byte~) f3::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f3::return#1 ← (byte/signed word/word/dword/signed dword~) f3::$1 + to:f3::@return +f3::@return: scope:[f3] from f3::@2 + (byte) f3::return#4 ← phi( f3::@2/(byte) f3::return#1 ) + (byte) f3::return#2 ← (byte) f3::return#4 + return + to:@return +f4: scope:[f4] from f3 + (byte) f4::x#1 ← phi( f3/(byte) f4::x#0 ) + (byte) f5::x#0 ← (byte) f4::x#1 + call f5 + (byte) f5::return#0 ← (byte) f5::return#2 + to:f4::@2 +f4::@2: scope:[f4] from f4 + (byte) f5::return#3 ← phi( f4/(byte) f5::return#0 ) + (byte~) f4::$0 ← (byte) f5::return#3 + (byte/signed word/word/dword/signed dword~) f4::$1 ← (byte~) f4::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f4::return#1 ← (byte/signed word/word/dword/signed dword~) f4::$1 + to:f4::@return +f4::@return: scope:[f4] from f4::@2 + (byte) f4::return#4 ← phi( f4::@2/(byte) f4::return#1 ) + (byte) f4::return#2 ← (byte) f4::return#4 + return + to:@return +f5: scope:[f5] from f4 + (byte) f5::x#1 ← phi( f4/(byte) f5::x#0 ) + (byte) f6::x#0 ← (byte) f5::x#1 + call f6 + (byte) f6::return#0 ← (byte) f6::return#2 + to:f5::@2 +f5::@2: scope:[f5] from f5 + (byte) f6::return#3 ← phi( f5/(byte) f6::return#0 ) + (byte~) f5::$0 ← (byte) f6::return#3 + (byte/signed word/word/dword/signed dword~) f5::$1 ← (byte~) f5::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f5::return#1 ← (byte/signed word/word/dword/signed dword~) f5::$1 + to:f5::@return +f5::@return: scope:[f5] from f5::@2 + (byte) f5::return#4 ← phi( f5::@2/(byte) f5::return#1 ) + (byte) f5::return#2 ← (byte) f5::return#4 + return + to:@return +f6: scope:[f6] from f5 + (byte) f6::x#1 ← phi( f5/(byte) f6::x#0 ) + (byte) f7::x#0 ← (byte) f6::x#1 + call f7 + (byte) f7::return#0 ← (byte) f7::return#2 + to:f6::@2 +f6::@2: scope:[f6] from f6 + (byte) f7::return#3 ← phi( f6/(byte) f7::return#0 ) + (byte~) f6::$0 ← (byte) f7::return#3 + (byte/signed word/word/dword/signed dword~) f6::$1 ← (byte~) f6::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f6::return#1 ← (byte/signed word/word/dword/signed dword~) f6::$1 + to:f6::@return +f6::@return: scope:[f6] from f6::@2 + (byte) f6::return#4 ← phi( f6::@2/(byte) f6::return#1 ) + (byte) f6::return#2 ← (byte) f6::return#4 + return + to:@return +f7: scope:[f7] from f6 + (byte) f7::x#1 ← phi( f6/(byte) f7::x#0 ) + (byte) f8::x#0 ← (byte) f7::x#1 + call f8 + (byte) f8::return#0 ← (byte) f8::return#2 + to:f7::@2 +f7::@2: scope:[f7] from f7 + (byte) f8::return#3 ← phi( f7/(byte) f8::return#0 ) + (byte~) f7::$0 ← (byte) f8::return#3 + (byte/signed word/word/dword/signed dword~) f7::$1 ← (byte~) f7::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f7::return#1 ← (byte/signed word/word/dword/signed dword~) f7::$1 + to:f7::@return +f7::@return: scope:[f7] from f7::@2 + (byte) f7::return#4 ← phi( f7::@2/(byte) f7::return#1 ) + (byte) f7::return#2 ← (byte) f7::return#4 + return + to:@return +f8: scope:[f8] from f7 + (byte) f8::x#1 ← phi( f7/(byte) f8::x#0 ) + (byte) f9::x#0 ← (byte) f8::x#1 + call f9 + (byte) f9::return#0 ← (byte) f9::return#2 + to:f8::@2 +f8::@2: scope:[f8] from f8 + (byte) f9::return#3 ← phi( f8/(byte) f9::return#0 ) + (byte~) f8::$0 ← (byte) f9::return#3 + (byte/signed word/word/dword/signed dword~) f8::$1 ← (byte~) f8::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f8::return#1 ← (byte/signed word/word/dword/signed dword~) f8::$1 + to:f8::@return +f8::@return: scope:[f8] from f8::@2 + (byte) f8::return#4 ← phi( f8::@2/(byte) f8::return#1 ) + (byte) f8::return#2 ← (byte) f8::return#4 + return + to:@return +f9: scope:[f9] from f8 + (byte) f9::x#1 ← phi( f8/(byte) f9::x#0 ) + (byte) f10::x#0 ← (byte) f9::x#1 + call f10 + (byte) f10::return#0 ← (byte) f10::return#2 + to:f9::@2 +f9::@2: scope:[f9] from f9 + (byte) f10::return#3 ← phi( f9/(byte) f10::return#0 ) + (byte~) f9::$0 ← (byte) f10::return#3 + (byte/signed word/word/dword/signed dword~) f9::$1 ← (byte~) f9::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f9::return#1 ← (byte/signed word/word/dword/signed dword~) f9::$1 + to:f9::@return +f9::@return: scope:[f9] from f9::@2 + (byte) f9::return#4 ← phi( f9::@2/(byte) f9::return#1 ) + (byte) f9::return#2 ← (byte) f9::return#4 + return + to:@return +f10: scope:[f10] from f9 + (byte) f10::x#1 ← phi( f9/(byte) f10::x#0 ) + (byte) f11::x#0 ← (byte) f10::x#1 + call f11 + (byte) f11::return#0 ← (byte) f11::return#2 + to:f10::@2 +f10::@2: scope:[f10] from f10 + (byte) f11::return#3 ← phi( f10/(byte) f11::return#0 ) + (byte~) f10::$0 ← (byte) f11::return#3 + (byte/signed word/word/dword/signed dword~) f10::$1 ← (byte~) f10::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f10::return#1 ← (byte/signed word/word/dword/signed dword~) f10::$1 + to:f10::@return +f10::@return: scope:[f10] from f10::@2 + (byte) f10::return#4 ← phi( f10::@2/(byte) f10::return#1 ) + (byte) f10::return#2 ← (byte) f10::return#4 + return + to:@return +f11: scope:[f11] from f10 + (byte) f11::x#1 ← phi( f10/(byte) f11::x#0 ) + (byte) f12::x#0 ← (byte) f11::x#1 + call f12 + (byte) f12::return#0 ← (byte) f12::return#2 + to:f11::@2 +f11::@2: scope:[f11] from f11 + (byte) f12::return#3 ← phi( f11/(byte) f12::return#0 ) + (byte~) f11::$0 ← (byte) f12::return#3 + (byte/signed word/word/dword/signed dword~) f11::$1 ← (byte~) f11::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f11::return#1 ← (byte/signed word/word/dword/signed dword~) f11::$1 + to:f11::@return +f11::@return: scope:[f11] from f11::@2 + (byte) f11::return#4 ← phi( f11::@2/(byte) f11::return#1 ) + (byte) f11::return#2 ← (byte) f11::return#4 + return + to:@return +f12: scope:[f12] from f11 + (byte) f12::x#1 ← phi( f11/(byte) f12::x#0 ) + (byte) f13::x#0 ← (byte) f12::x#1 + call f13 + (byte) f13::return#0 ← (byte) f13::return#2 + to:f12::@2 +f12::@2: scope:[f12] from f12 + (byte) f13::return#3 ← phi( f12/(byte) f13::return#0 ) + (byte~) f12::$0 ← (byte) f13::return#3 + (byte/signed word/word/dword/signed dword~) f12::$1 ← (byte~) f12::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f12::return#1 ← (byte/signed word/word/dword/signed dword~) f12::$1 + to:f12::@return +f12::@return: scope:[f12] from f12::@2 + (byte) f12::return#4 ← phi( f12::@2/(byte) f12::return#1 ) + (byte) f12::return#2 ← (byte) f12::return#4 + return + to:@return +f13: scope:[f13] from f12 + (byte) f13::x#1 ← phi( f12/(byte) f13::x#0 ) + (byte) f14::x#0 ← (byte) f13::x#1 + call f14 + (byte) f14::return#0 ← (byte) f14::return#2 + to:f13::@2 +f13::@2: scope:[f13] from f13 + (byte) f14::return#3 ← phi( f13/(byte) f14::return#0 ) + (byte~) f13::$0 ← (byte) f14::return#3 + (byte/signed word/word/dword/signed dword~) f13::$1 ← (byte~) f13::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f13::return#1 ← (byte/signed word/word/dword/signed dword~) f13::$1 + to:f13::@return +f13::@return: scope:[f13] from f13::@2 + (byte) f13::return#4 ← phi( f13::@2/(byte) f13::return#1 ) + (byte) f13::return#2 ← (byte) f13::return#4 + return + to:@return +f14: scope:[f14] from f13 + (byte) f14::x#1 ← phi( f13/(byte) f14::x#0 ) + (byte) f15::x#0 ← (byte) f14::x#1 + call f15 + (byte) f15::return#0 ← (byte) f15::return#2 + to:f14::@2 +f14::@2: scope:[f14] from f14 + (byte) f15::return#3 ← phi( f14/(byte) f15::return#0 ) + (byte~) f14::$0 ← (byte) f15::return#3 + (byte/signed word/word/dword/signed dword~) f14::$1 ← (byte~) f14::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f14::return#1 ← (byte/signed word/word/dword/signed dword~) f14::$1 + to:f14::@return +f14::@return: scope:[f14] from f14::@2 + (byte) f14::return#4 ← phi( f14::@2/(byte) f14::return#1 ) + (byte) f14::return#2 ← (byte) f14::return#4 + return + to:@return +f15: scope:[f15] from f14 + (byte) f15::x#1 ← phi( f14/(byte) f15::x#0 ) + (byte) f16::x#0 ← (byte) f15::x#1 + call f16 + (byte) f16::return#0 ← (byte) f16::return#2 + to:f15::@2 +f15::@2: scope:[f15] from f15 + (byte) f16::return#3 ← phi( f15/(byte) f16::return#0 ) + (byte~) f15::$0 ← (byte) f16::return#3 + (byte/signed word/word/dword/signed dword~) f15::$1 ← (byte~) f15::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f15::return#1 ← (byte/signed word/word/dword/signed dword~) f15::$1 + to:f15::@return +f15::@return: scope:[f15] from f15::@2 + (byte) f15::return#4 ← phi( f15::@2/(byte) f15::return#1 ) + (byte) f15::return#2 ← (byte) f15::return#4 + return + to:@return +f16: scope:[f16] from f15 + (byte) f16::x#1 ← phi( f15/(byte) f16::x#0 ) + (byte) f17::x#0 ← (byte) f16::x#1 + call f17 + (byte) f17::return#0 ← (byte) f17::return#2 + to:f16::@2 +f16::@2: scope:[f16] from f16 + (byte) f17::return#3 ← phi( f16/(byte) f17::return#0 ) + (byte~) f16::$0 ← (byte) f17::return#3 + (byte/signed word/word/dword/signed dword~) f16::$1 ← (byte~) f16::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f16::return#1 ← (byte/signed word/word/dword/signed dword~) f16::$1 + to:f16::@return +f16::@return: scope:[f16] from f16::@2 + (byte) f16::return#4 ← phi( f16::@2/(byte) f16::return#1 ) + (byte) f16::return#2 ← (byte) f16::return#4 + return + to:@return +f17: scope:[f17] from f16 + (byte) f17::x#1 ← phi( f16/(byte) f17::x#0 ) + (byte) f18::x#0 ← (byte) f17::x#1 + call f18 + (byte) f18::return#0 ← (byte) f18::return#2 + to:f17::@2 +f17::@2: scope:[f17] from f17 + (byte) f18::return#3 ← phi( f17/(byte) f18::return#0 ) + (byte~) f17::$0 ← (byte) f18::return#3 + (byte/signed word/word/dword/signed dword~) f17::$1 ← (byte~) f17::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f17::return#1 ← (byte/signed word/word/dword/signed dword~) f17::$1 + to:f17::@return +f17::@return: scope:[f17] from f17::@2 + (byte) f17::return#4 ← phi( f17::@2/(byte) f17::return#1 ) + (byte) f17::return#2 ← (byte) f17::return#4 + return + to:@return +f18: scope:[f18] from f17 + (byte) f18::x#1 ← phi( f17/(byte) f18::x#0 ) + (byte) f19::x#0 ← (byte) f18::x#1 + call f19 + (byte) f19::return#0 ← (byte) f19::return#2 + to:f18::@2 +f18::@2: scope:[f18] from f18 + (byte) f19::return#3 ← phi( f18/(byte) f19::return#0 ) + (byte~) f18::$0 ← (byte) f19::return#3 + (byte/signed word/word/dword/signed dword~) f18::$1 ← (byte~) f18::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f18::return#1 ← (byte/signed word/word/dword/signed dword~) f18::$1 + to:f18::@return +f18::@return: scope:[f18] from f18::@2 + (byte) f18::return#4 ← phi( f18::@2/(byte) f18::return#1 ) + (byte) f18::return#2 ← (byte) f18::return#4 + return + to:@return +f19: scope:[f19] from f18 + (byte) f19::x#1 ← phi( f18/(byte) f19::x#0 ) + (byte) f20::x#0 ← (byte) f19::x#1 + call f20 + (byte) f20::return#0 ← (byte) f20::return#2 + to:f19::@2 +f19::@2: scope:[f19] from f19 + (byte) f20::return#3 ← phi( f19/(byte) f20::return#0 ) + (byte~) f19::$0 ← (byte) f20::return#3 + (byte/signed word/word/dword/signed dword~) f19::$1 ← (byte~) f19::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f19::return#1 ← (byte/signed word/word/dword/signed dword~) f19::$1 + to:f19::@return +f19::@return: scope:[f19] from f19::@2 + (byte) f19::return#4 ← phi( f19::@2/(byte) f19::return#1 ) + (byte) f19::return#2 ← (byte) f19::return#4 + return + to:@return +f20: scope:[f20] from f19 + (byte) f20::x#1 ← phi( f19/(byte) f20::x#0 ) + (byte) f21::x#0 ← (byte) f20::x#1 + call f21 + (byte) f21::return#0 ← (byte) f21::return#2 + to:f20::@2 +f20::@2: scope:[f20] from f20 + (byte) f21::return#3 ← phi( f20/(byte) f21::return#0 ) + (byte~) f20::$0 ← (byte) f21::return#3 + (byte/signed word/word/dword/signed dword~) f20::$1 ← (byte~) f20::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f20::return#1 ← (byte/signed word/word/dword/signed dword~) f20::$1 + to:f20::@return +f20::@return: scope:[f20] from f20::@2 + (byte) f20::return#4 ← phi( f20::@2/(byte) f20::return#1 ) + (byte) f20::return#2 ← (byte) f20::return#4 + return + to:@return +f21: scope:[f21] from f20 + (byte) f21::x#1 ← phi( f20/(byte) f21::x#0 ) + (byte) f22::x#0 ← (byte) f21::x#1 + call f22 + (byte) f22::return#0 ← (byte) f22::return#2 + to:f21::@2 +f21::@2: scope:[f21] from f21 + (byte) f22::return#3 ← phi( f21/(byte) f22::return#0 ) + (byte~) f21::$0 ← (byte) f22::return#3 + (byte/signed word/word/dword/signed dword~) f21::$1 ← (byte~) f21::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f21::return#1 ← (byte/signed word/word/dword/signed dword~) f21::$1 + to:f21::@return +f21::@return: scope:[f21] from f21::@2 + (byte) f21::return#4 ← phi( f21::@2/(byte) f21::return#1 ) + (byte) f21::return#2 ← (byte) f21::return#4 + return + to:@return +f22: scope:[f22] from f21 + (byte) f22::x#1 ← phi( f21/(byte) f22::x#0 ) + (byte) f23::x#0 ← (byte) f22::x#1 + call f23 + (byte) f23::return#0 ← (byte) f23::return#2 + to:f22::@2 +f22::@2: scope:[f22] from f22 + (byte) f23::return#3 ← phi( f22/(byte) f23::return#0 ) + (byte~) f22::$0 ← (byte) f23::return#3 + (byte/signed word/word/dword/signed dword~) f22::$1 ← (byte~) f22::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f22::return#1 ← (byte/signed word/word/dword/signed dword~) f22::$1 + to:f22::@return +f22::@return: scope:[f22] from f22::@2 + (byte) f22::return#4 ← phi( f22::@2/(byte) f22::return#1 ) + (byte) f22::return#2 ← (byte) f22::return#4 + return + to:@return +f23: scope:[f23] from f22 + (byte) f23::x#1 ← phi( f22/(byte) f23::x#0 ) + (byte) f24::x#0 ← (byte) f23::x#1 + call f24 + (byte) f24::return#0 ← (byte) f24::return#2 + to:f23::@2 +f23::@2: scope:[f23] from f23 + (byte) f24::return#3 ← phi( f23/(byte) f24::return#0 ) + (byte~) f23::$0 ← (byte) f24::return#3 + (byte/signed word/word/dword/signed dword~) f23::$1 ← (byte~) f23::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f23::return#1 ← (byte/signed word/word/dword/signed dword~) f23::$1 + to:f23::@return +f23::@return: scope:[f23] from f23::@2 + (byte) f23::return#4 ← phi( f23::@2/(byte) f23::return#1 ) + (byte) f23::return#2 ← (byte) f23::return#4 + return + to:@return +f24: scope:[f24] from f23 + (byte) f24::x#1 ← phi( f23/(byte) f24::x#0 ) + (byte) f25::x#0 ← (byte) f24::x#1 + call f25 + (byte) f25::return#0 ← (byte) f25::return#2 + to:f24::@2 +f24::@2: scope:[f24] from f24 + (byte) f25::return#3 ← phi( f24/(byte) f25::return#0 ) + (byte~) f24::$0 ← (byte) f25::return#3 + (byte/signed word/word/dword/signed dword~) f24::$1 ← (byte~) f24::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f24::return#1 ← (byte/signed word/word/dword/signed dword~) f24::$1 + to:f24::@return +f24::@return: scope:[f24] from f24::@2 + (byte) f24::return#4 ← phi( f24::@2/(byte) f24::return#1 ) + (byte) f24::return#2 ← (byte) f24::return#4 + return + to:@return +f25: scope:[f25] from f24 + (byte) f25::x#1 ← phi( f24/(byte) f25::x#0 ) + (byte) f26::x#0 ← (byte) f25::x#1 + call f26 + (byte) f26::return#0 ← (byte) f26::return#2 + to:f25::@2 +f25::@2: scope:[f25] from f25 + (byte) f26::return#3 ← phi( f25/(byte) f26::return#0 ) + (byte~) f25::$0 ← (byte) f26::return#3 + (byte/signed word/word/dword/signed dword~) f25::$1 ← (byte~) f25::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f25::return#1 ← (byte/signed word/word/dword/signed dword~) f25::$1 + to:f25::@return +f25::@return: scope:[f25] from f25::@2 + (byte) f25::return#4 ← phi( f25::@2/(byte) f25::return#1 ) + (byte) f25::return#2 ← (byte) f25::return#4 + return + to:@return +f26: scope:[f26] from f25 + (byte) f26::x#1 ← phi( f25/(byte) f26::x#0 ) + (byte) f27::x#0 ← (byte) f26::x#1 + call f27 + (byte) f27::return#0 ← (byte) f27::return#2 + to:f26::@2 +f26::@2: scope:[f26] from f26 + (byte) f27::return#3 ← phi( f26/(byte) f27::return#0 ) + (byte~) f26::$0 ← (byte) f27::return#3 + (byte/signed word/word/dword/signed dword~) f26::$1 ← (byte~) f26::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f26::return#1 ← (byte/signed word/word/dword/signed dword~) f26::$1 + to:f26::@return +f26::@return: scope:[f26] from f26::@2 + (byte) f26::return#4 ← phi( f26::@2/(byte) f26::return#1 ) + (byte) f26::return#2 ← (byte) f26::return#4 + return + to:@return +f27: scope:[f27] from f26 + (byte) f27::x#1 ← phi( f26/(byte) f27::x#0 ) + (byte) f28::x#0 ← (byte) f27::x#1 + call f28 + (byte) f28::return#0 ← (byte) f28::return#2 + to:f27::@2 +f27::@2: scope:[f27] from f27 + (byte) f28::return#3 ← phi( f27/(byte) f28::return#0 ) + (byte~) f27::$0 ← (byte) f28::return#3 + (byte/signed word/word/dword/signed dword~) f27::$1 ← (byte~) f27::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f27::return#1 ← (byte/signed word/word/dword/signed dword~) f27::$1 + to:f27::@return +f27::@return: scope:[f27] from f27::@2 + (byte) f27::return#4 ← phi( f27::@2/(byte) f27::return#1 ) + (byte) f27::return#2 ← (byte) f27::return#4 + return + to:@return +f28: scope:[f28] from f27 + (byte) f28::x#1 ← phi( f27/(byte) f28::x#0 ) + (byte) f29::x#0 ← (byte) f28::x#1 + call f29 + (byte) f29::return#0 ← (byte) f29::return#2 + to:f28::@2 +f28::@2: scope:[f28] from f28 + (byte) f29::return#3 ← phi( f28/(byte) f29::return#0 ) + (byte~) f28::$0 ← (byte) f29::return#3 + (byte/signed word/word/dword/signed dword~) f28::$1 ← (byte~) f28::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f28::return#1 ← (byte/signed word/word/dword/signed dword~) f28::$1 + to:f28::@return +f28::@return: scope:[f28] from f28::@2 + (byte) f28::return#4 ← phi( f28::@2/(byte) f28::return#1 ) + (byte) f28::return#2 ← (byte) f28::return#4 + return + to:@return +f29: scope:[f29] from f28 + (byte) f29::x#1 ← phi( f28/(byte) f29::x#0 ) + (byte) f30::x#0 ← (byte) f29::x#1 + call f30 + (byte) f30::return#0 ← (byte) f30::return#2 + to:f29::@2 +f29::@2: scope:[f29] from f29 + (byte) f30::return#3 ← phi( f29/(byte) f30::return#0 ) + (byte~) f29::$0 ← (byte) f30::return#3 + (byte/signed word/word/dword/signed dword~) f29::$1 ← (byte~) f29::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f29::return#1 ← (byte/signed word/word/dword/signed dword~) f29::$1 + to:f29::@return +f29::@return: scope:[f29] from f29::@2 + (byte) f29::return#4 ← phi( f29::@2/(byte) f29::return#1 ) + (byte) f29::return#2 ← (byte) f29::return#4 + return + to:@return +f30: scope:[f30] from f29 + (byte) f30::x#1 ← phi( f29/(byte) f30::x#0 ) + (byte) f31::x#0 ← (byte) f30::x#1 + call f31 + (byte) f31::return#0 ← (byte) f31::return#2 + to:f30::@2 +f30::@2: scope:[f30] from f30 + (byte) f31::return#3 ← phi( f30/(byte) f31::return#0 ) + (byte~) f30::$0 ← (byte) f31::return#3 + (byte/signed word/word/dword/signed dword~) f30::$1 ← (byte~) f30::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f30::return#1 ← (byte/signed word/word/dword/signed dword~) f30::$1 + to:f30::@return +f30::@return: scope:[f30] from f30::@2 + (byte) f30::return#4 ← phi( f30::@2/(byte) f30::return#1 ) + (byte) f30::return#2 ← (byte) f30::return#4 + return + to:@return +f31: scope:[f31] from f30 + (byte) f31::x#1 ← phi( f30/(byte) f31::x#0 ) + (byte) f32::x#0 ← (byte) f31::x#1 + call f32 + (byte) f32::return#0 ← (byte) f32::return#2 + to:f31::@2 +f31::@2: scope:[f31] from f31 + (byte) f32::return#3 ← phi( f31/(byte) f32::return#0 ) + (byte~) f31::$0 ← (byte) f32::return#3 + (byte/signed word/word/dword/signed dword~) f31::$1 ← (byte~) f31::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f31::return#1 ← (byte/signed word/word/dword/signed dword~) f31::$1 + to:f31::@return +f31::@return: scope:[f31] from f31::@2 + (byte) f31::return#4 ← phi( f31::@2/(byte) f31::return#1 ) + (byte) f31::return#2 ← (byte) f31::return#4 + return + to:@return +f32: scope:[f32] from f31 + (byte) f32::x#1 ← phi( f31/(byte) f32::x#0 ) + (byte) f33::x#0 ← (byte) f32::x#1 + call f33 + (byte) f33::return#0 ← (byte) f33::return#2 + to:f32::@2 +f32::@2: scope:[f32] from f32 + (byte) f33::return#3 ← phi( f32/(byte) f33::return#0 ) + (byte~) f32::$0 ← (byte) f33::return#3 + (byte/signed word/word/dword/signed dword~) f32::$1 ← (byte~) f32::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f32::return#1 ← (byte/signed word/word/dword/signed dword~) f32::$1 + to:f32::@return +f32::@return: scope:[f32] from f32::@2 + (byte) f32::return#4 ← phi( f32::@2/(byte) f32::return#1 ) + (byte) f32::return#2 ← (byte) f32::return#4 + return + to:@return +f33: scope:[f33] from f32 + (byte) f33::x#1 ← phi( f32/(byte) f33::x#0 ) + (byte) f34::x#0 ← (byte) f33::x#1 + call f34 + (byte) f34::return#0 ← (byte) f34::return#2 + to:f33::@2 +f33::@2: scope:[f33] from f33 + (byte) f34::return#3 ← phi( f33/(byte) f34::return#0 ) + (byte~) f33::$0 ← (byte) f34::return#3 + (byte/signed word/word/dword/signed dword~) f33::$1 ← (byte~) f33::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f33::return#1 ← (byte/signed word/word/dword/signed dword~) f33::$1 + to:f33::@return +f33::@return: scope:[f33] from f33::@2 + (byte) f33::return#4 ← phi( f33::@2/(byte) f33::return#1 ) + (byte) f33::return#2 ← (byte) f33::return#4 + return + to:@return +f34: scope:[f34] from f33 + (byte) f34::x#1 ← phi( f33/(byte) f34::x#0 ) + (byte) f35::x#0 ← (byte) f34::x#1 + call f35 + (byte) f35::return#0 ← (byte) f35::return#2 + to:f34::@2 +f34::@2: scope:[f34] from f34 + (byte) f35::return#3 ← phi( f34/(byte) f35::return#0 ) + (byte~) f34::$0 ← (byte) f35::return#3 + (byte/signed word/word/dword/signed dword~) f34::$1 ← (byte~) f34::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f34::return#1 ← (byte/signed word/word/dword/signed dword~) f34::$1 + to:f34::@return +f34::@return: scope:[f34] from f34::@2 + (byte) f34::return#4 ← phi( f34::@2/(byte) f34::return#1 ) + (byte) f34::return#2 ← (byte) f34::return#4 + return + to:@return +f35: scope:[f35] from f34 + (byte) f35::x#1 ← phi( f34/(byte) f35::x#0 ) + (byte) f36::x#0 ← (byte) f35::x#1 + call f36 + (byte) f36::return#0 ← (byte) f36::return#2 + to:f35::@2 +f35::@2: scope:[f35] from f35 + (byte) f36::return#3 ← phi( f35/(byte) f36::return#0 ) + (byte~) f35::$0 ← (byte) f36::return#3 + (byte/signed word/word/dword/signed dword~) f35::$1 ← (byte~) f35::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f35::return#1 ← (byte/signed word/word/dword/signed dword~) f35::$1 + to:f35::@return +f35::@return: scope:[f35] from f35::@2 + (byte) f35::return#4 ← phi( f35::@2/(byte) f35::return#1 ) + (byte) f35::return#2 ← (byte) f35::return#4 + return + to:@return +f36: scope:[f36] from f35 + (byte) f36::x#1 ← phi( f35/(byte) f36::x#0 ) + (byte) f37::x#0 ← (byte) f36::x#1 + call f37 + (byte) f37::return#0 ← (byte) f37::return#2 + to:f36::@2 +f36::@2: scope:[f36] from f36 + (byte) f37::return#3 ← phi( f36/(byte) f37::return#0 ) + (byte~) f36::$0 ← (byte) f37::return#3 + (byte/signed word/word/dword/signed dword~) f36::$1 ← (byte~) f36::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f36::return#1 ← (byte/signed word/word/dword/signed dword~) f36::$1 + to:f36::@return +f36::@return: scope:[f36] from f36::@2 + (byte) f36::return#4 ← phi( f36::@2/(byte) f36::return#1 ) + (byte) f36::return#2 ← (byte) f36::return#4 + return + to:@return +f37: scope:[f37] from f36 + (byte) f37::x#1 ← phi( f36/(byte) f37::x#0 ) + (byte) f38::x#0 ← (byte) f37::x#1 + call f38 + (byte) f38::return#0 ← (byte) f38::return#2 + to:f37::@2 +f37::@2: scope:[f37] from f37 + (byte) f38::return#3 ← phi( f37/(byte) f38::return#0 ) + (byte~) f37::$0 ← (byte) f38::return#3 + (byte/signed word/word/dword/signed dword~) f37::$1 ← (byte~) f37::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f37::return#1 ← (byte/signed word/word/dword/signed dword~) f37::$1 + to:f37::@return +f37::@return: scope:[f37] from f37::@2 + (byte) f37::return#4 ← phi( f37::@2/(byte) f37::return#1 ) + (byte) f37::return#2 ← (byte) f37::return#4 + return + to:@return +f38: scope:[f38] from f37 + (byte) f38::x#1 ← phi( f37/(byte) f38::x#0 ) + (byte) f39::x#0 ← (byte) f38::x#1 + call f39 + (byte) f39::return#0 ← (byte) f39::return#2 + to:f38::@2 +f38::@2: scope:[f38] from f38 + (byte) f39::return#3 ← phi( f38/(byte) f39::return#0 ) + (byte~) f38::$0 ← (byte) f39::return#3 + (byte/signed word/word/dword/signed dword~) f38::$1 ← (byte~) f38::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f38::return#1 ← (byte/signed word/word/dword/signed dword~) f38::$1 + to:f38::@return +f38::@return: scope:[f38] from f38::@2 + (byte) f38::return#4 ← phi( f38::@2/(byte) f38::return#1 ) + (byte) f38::return#2 ← (byte) f38::return#4 + return + to:@return +f39: scope:[f39] from f38 + (byte) f39::x#1 ← phi( f38/(byte) f39::x#0 ) + (byte) f40::x#0 ← (byte) f39::x#1 + call f40 + (byte) f40::return#0 ← (byte) f40::return#2 + to:f39::@2 +f39::@2: scope:[f39] from f39 + (byte) f40::return#3 ← phi( f39/(byte) f40::return#0 ) + (byte~) f39::$0 ← (byte) f40::return#3 + (byte/signed word/word/dword/signed dword~) f39::$1 ← (byte~) f39::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f39::return#1 ← (byte/signed word/word/dword/signed dword~) f39::$1 + to:f39::@return +f39::@return: scope:[f39] from f39::@2 + (byte) f39::return#4 ← phi( f39::@2/(byte) f39::return#1 ) + (byte) f39::return#2 ← (byte) f39::return#4 + return + to:@return +f40: scope:[f40] from f39 + (byte) f40::x#1 ← phi( f39/(byte) f40::x#0 ) + (byte) f41::x#0 ← (byte) f40::x#1 + call f41 + (byte) f41::return#0 ← (byte) f41::return#2 + to:f40::@2 +f40::@2: scope:[f40] from f40 + (byte) f41::return#3 ← phi( f40/(byte) f41::return#0 ) + (byte~) f40::$0 ← (byte) f41::return#3 + (byte/signed word/word/dword/signed dword~) f40::$1 ← (byte~) f40::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f40::return#1 ← (byte/signed word/word/dword/signed dword~) f40::$1 + to:f40::@return +f40::@return: scope:[f40] from f40::@2 + (byte) f40::return#4 ← phi( f40::@2/(byte) f40::return#1 ) + (byte) f40::return#2 ← (byte) f40::return#4 + return + to:@return +f41: scope:[f41] from f40 + (byte) f41::x#1 ← phi( f40/(byte) f41::x#0 ) + (byte) f42::x#0 ← (byte) f41::x#1 + call f42 + (byte) f42::return#0 ← (byte) f42::return#2 + to:f41::@2 +f41::@2: scope:[f41] from f41 + (byte) f42::return#3 ← phi( f41/(byte) f42::return#0 ) + (byte~) f41::$0 ← (byte) f42::return#3 + (byte/signed word/word/dword/signed dword~) f41::$1 ← (byte~) f41::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f41::return#1 ← (byte/signed word/word/dword/signed dword~) f41::$1 + to:f41::@return +f41::@return: scope:[f41] from f41::@2 + (byte) f41::return#4 ← phi( f41::@2/(byte) f41::return#1 ) + (byte) f41::return#2 ← (byte) f41::return#4 + return + to:@return +f42: scope:[f42] from f41 + (byte) f42::x#1 ← phi( f41/(byte) f42::x#0 ) + (byte) f43::x#0 ← (byte) f42::x#1 + call f43 + (byte) f43::return#0 ← (byte) f43::return#2 + to:f42::@2 +f42::@2: scope:[f42] from f42 + (byte) f43::return#3 ← phi( f42/(byte) f43::return#0 ) + (byte~) f42::$0 ← (byte) f43::return#3 + (byte/signed word/word/dword/signed dword~) f42::$1 ← (byte~) f42::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f42::return#1 ← (byte/signed word/word/dword/signed dword~) f42::$1 + to:f42::@return +f42::@return: scope:[f42] from f42::@2 + (byte) f42::return#4 ← phi( f42::@2/(byte) f42::return#1 ) + (byte) f42::return#2 ← (byte) f42::return#4 + return + to:@return +f43: scope:[f43] from f42 + (byte) f43::x#1 ← phi( f42/(byte) f43::x#0 ) + (byte) f44::x#0 ← (byte) f43::x#1 + call f44 + (byte) f44::return#0 ← (byte) f44::return#2 + to:f43::@2 +f43::@2: scope:[f43] from f43 + (byte) f44::return#3 ← phi( f43/(byte) f44::return#0 ) + (byte~) f43::$0 ← (byte) f44::return#3 + (byte/signed word/word/dword/signed dword~) f43::$1 ← (byte~) f43::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f43::return#1 ← (byte/signed word/word/dword/signed dword~) f43::$1 + to:f43::@return +f43::@return: scope:[f43] from f43::@2 + (byte) f43::return#4 ← phi( f43::@2/(byte) f43::return#1 ) + (byte) f43::return#2 ← (byte) f43::return#4 + return + to:@return +f44: scope:[f44] from f43 + (byte) f44::x#1 ← phi( f43/(byte) f44::x#0 ) + (byte) f45::x#0 ← (byte) f44::x#1 + call f45 + (byte) f45::return#0 ← (byte) f45::return#2 + to:f44::@2 +f44::@2: scope:[f44] from f44 + (byte) f45::return#3 ← phi( f44/(byte) f45::return#0 ) + (byte~) f44::$0 ← (byte) f45::return#3 + (byte/signed word/word/dword/signed dword~) f44::$1 ← (byte~) f44::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f44::return#1 ← (byte/signed word/word/dword/signed dword~) f44::$1 + to:f44::@return +f44::@return: scope:[f44] from f44::@2 + (byte) f44::return#4 ← phi( f44::@2/(byte) f44::return#1 ) + (byte) f44::return#2 ← (byte) f44::return#4 + return + to:@return +f45: scope:[f45] from f44 + (byte) f45::x#1 ← phi( f44/(byte) f45::x#0 ) + (byte) f46::x#0 ← (byte) f45::x#1 + call f46 + (byte) f46::return#0 ← (byte) f46::return#2 + to:f45::@2 +f45::@2: scope:[f45] from f45 + (byte) f46::return#3 ← phi( f45/(byte) f46::return#0 ) + (byte~) f45::$0 ← (byte) f46::return#3 + (byte/signed word/word/dword/signed dword~) f45::$1 ← (byte~) f45::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f45::return#1 ← (byte/signed word/word/dword/signed dword~) f45::$1 + to:f45::@return +f45::@return: scope:[f45] from f45::@2 + (byte) f45::return#4 ← phi( f45::@2/(byte) f45::return#1 ) + (byte) f45::return#2 ← (byte) f45::return#4 + return + to:@return +f46: scope:[f46] from f45 + (byte) f46::x#1 ← phi( f45/(byte) f46::x#0 ) + (byte) f47::x#0 ← (byte) f46::x#1 + call f47 + (byte) f47::return#0 ← (byte) f47::return#2 + to:f46::@2 +f46::@2: scope:[f46] from f46 + (byte) f47::return#3 ← phi( f46/(byte) f47::return#0 ) + (byte~) f46::$0 ← (byte) f47::return#3 + (byte/signed word/word/dword/signed dword~) f46::$1 ← (byte~) f46::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f46::return#1 ← (byte/signed word/word/dword/signed dword~) f46::$1 + to:f46::@return +f46::@return: scope:[f46] from f46::@2 + (byte) f46::return#4 ← phi( f46::@2/(byte) f46::return#1 ) + (byte) f46::return#2 ← (byte) f46::return#4 + return + to:@return +f47: scope:[f47] from f46 + (byte) f47::x#1 ← phi( f46/(byte) f47::x#0 ) + (byte) f48::x#0 ← (byte) f47::x#1 + call f48 + (byte) f48::return#0 ← (byte) f48::return#2 + to:f47::@2 +f47::@2: scope:[f47] from f47 + (byte) f48::return#3 ← phi( f47/(byte) f48::return#0 ) + (byte~) f47::$0 ← (byte) f48::return#3 + (byte/signed word/word/dword/signed dword~) f47::$1 ← (byte~) f47::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f47::return#1 ← (byte/signed word/word/dword/signed dword~) f47::$1 + to:f47::@return +f47::@return: scope:[f47] from f47::@2 + (byte) f47::return#4 ← phi( f47::@2/(byte) f47::return#1 ) + (byte) f47::return#2 ← (byte) f47::return#4 + return + to:@return +f48: scope:[f48] from f47 + (byte) f48::x#1 ← phi( f47/(byte) f48::x#0 ) + (byte) f49::x#0 ← (byte) f48::x#1 + call f49 + (byte) f49::return#0 ← (byte) f49::return#2 + to:f48::@2 +f48::@2: scope:[f48] from f48 + (byte) f49::return#3 ← phi( f48/(byte) f49::return#0 ) + (byte~) f48::$0 ← (byte) f49::return#3 + (byte/signed word/word/dword/signed dword~) f48::$1 ← (byte~) f48::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f48::return#1 ← (byte/signed word/word/dword/signed dword~) f48::$1 + to:f48::@return +f48::@return: scope:[f48] from f48::@2 + (byte) f48::return#4 ← phi( f48::@2/(byte) f48::return#1 ) + (byte) f48::return#2 ← (byte) f48::return#4 + return + to:@return +f49: scope:[f49] from f48 + (byte) f49::x#1 ← phi( f48/(byte) f49::x#0 ) + (byte) f50::x#0 ← (byte) f49::x#1 + call f50 + (byte) f50::return#0 ← (byte) f50::return#2 + to:f49::@2 +f49::@2: scope:[f49] from f49 + (byte) f50::return#3 ← phi( f49/(byte) f50::return#0 ) + (byte~) f49::$0 ← (byte) f50::return#3 + (byte/signed word/word/dword/signed dword~) f49::$1 ← (byte~) f49::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f49::return#1 ← (byte/signed word/word/dword/signed dword~) f49::$1 + to:f49::@return +f49::@return: scope:[f49] from f49::@2 + (byte) f49::return#4 ← phi( f49::@2/(byte) f49::return#1 ) + (byte) f49::return#2 ← (byte) f49::return#4 + return + to:@return +f50: scope:[f50] from f49 + (byte) f50::x#1 ← phi( f49/(byte) f50::x#0 ) + (byte) f51::x#0 ← (byte) f50::x#1 + call f51 + (byte) f51::return#0 ← (byte) f51::return#2 + to:f50::@2 +f50::@2: scope:[f50] from f50 + (byte) f51::return#3 ← phi( f50/(byte) f51::return#0 ) + (byte~) f50::$0 ← (byte) f51::return#3 + (byte/signed word/word/dword/signed dword~) f50::$1 ← (byte~) f50::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f50::return#1 ← (byte/signed word/word/dword/signed dword~) f50::$1 + to:f50::@return +f50::@return: scope:[f50] from f50::@2 + (byte) f50::return#4 ← phi( f50::@2/(byte) f50::return#1 ) + (byte) f50::return#2 ← (byte) f50::return#4 + return + to:@return +f51: scope:[f51] from f50 + (byte) f51::x#1 ← phi( f50/(byte) f51::x#0 ) + (byte) f52::x#0 ← (byte) f51::x#1 + call f52 + (byte) f52::return#0 ← (byte) f52::return#2 + to:f51::@2 +f51::@2: scope:[f51] from f51 + (byte) f52::return#3 ← phi( f51/(byte) f52::return#0 ) + (byte~) f51::$0 ← (byte) f52::return#3 + (byte/signed word/word/dword/signed dword~) f51::$1 ← (byte~) f51::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f51::return#1 ← (byte/signed word/word/dword/signed dword~) f51::$1 + to:f51::@return +f51::@return: scope:[f51] from f51::@2 + (byte) f51::return#4 ← phi( f51::@2/(byte) f51::return#1 ) + (byte) f51::return#2 ← (byte) f51::return#4 + return + to:@return +f52: scope:[f52] from f51 + (byte) f52::x#1 ← phi( f51/(byte) f52::x#0 ) + (byte) f53::x#0 ← (byte) f52::x#1 + call f53 + (byte) f53::return#0 ← (byte) f53::return#2 + to:f52::@2 +f52::@2: scope:[f52] from f52 + (byte) f53::return#3 ← phi( f52/(byte) f53::return#0 ) + (byte~) f52::$0 ← (byte) f53::return#3 + (byte/signed word/word/dword/signed dword~) f52::$1 ← (byte~) f52::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f52::return#1 ← (byte/signed word/word/dword/signed dword~) f52::$1 + to:f52::@return +f52::@return: scope:[f52] from f52::@2 + (byte) f52::return#4 ← phi( f52::@2/(byte) f52::return#1 ) + (byte) f52::return#2 ← (byte) f52::return#4 + return + to:@return +f53: scope:[f53] from f52 + (byte) f53::x#1 ← phi( f52/(byte) f53::x#0 ) + (byte) f54::x#0 ← (byte) f53::x#1 + call f54 + (byte) f54::return#0 ← (byte) f54::return#2 + to:f53::@2 +f53::@2: scope:[f53] from f53 + (byte) f54::return#3 ← phi( f53/(byte) f54::return#0 ) + (byte~) f53::$0 ← (byte) f54::return#3 + (byte/signed word/word/dword/signed dword~) f53::$1 ← (byte~) f53::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f53::return#1 ← (byte/signed word/word/dword/signed dword~) f53::$1 + to:f53::@return +f53::@return: scope:[f53] from f53::@2 + (byte) f53::return#4 ← phi( f53::@2/(byte) f53::return#1 ) + (byte) f53::return#2 ← (byte) f53::return#4 + return + to:@return +f54: scope:[f54] from f53 + (byte) f54::x#1 ← phi( f53/(byte) f54::x#0 ) + (byte) f55::x#0 ← (byte) f54::x#1 + call f55 + (byte) f55::return#0 ← (byte) f55::return#2 + to:f54::@2 +f54::@2: scope:[f54] from f54 + (byte) f55::return#3 ← phi( f54/(byte) f55::return#0 ) + (byte~) f54::$0 ← (byte) f55::return#3 + (byte/signed word/word/dword/signed dword~) f54::$1 ← (byte~) f54::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f54::return#1 ← (byte/signed word/word/dword/signed dword~) f54::$1 + to:f54::@return +f54::@return: scope:[f54] from f54::@2 + (byte) f54::return#4 ← phi( f54::@2/(byte) f54::return#1 ) + (byte) f54::return#2 ← (byte) f54::return#4 + return + to:@return +f55: scope:[f55] from f54 + (byte) f55::x#1 ← phi( f54/(byte) f55::x#0 ) + (byte) f56::x#0 ← (byte) f55::x#1 + call f56 + (byte) f56::return#0 ← (byte) f56::return#2 + to:f55::@2 +f55::@2: scope:[f55] from f55 + (byte) f56::return#3 ← phi( f55/(byte) f56::return#0 ) + (byte~) f55::$0 ← (byte) f56::return#3 + (byte/signed word/word/dword/signed dword~) f55::$1 ← (byte~) f55::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f55::return#1 ← (byte/signed word/word/dword/signed dword~) f55::$1 + to:f55::@return +f55::@return: scope:[f55] from f55::@2 + (byte) f55::return#4 ← phi( f55::@2/(byte) f55::return#1 ) + (byte) f55::return#2 ← (byte) f55::return#4 + return + to:@return +f56: scope:[f56] from f55 + (byte) f56::x#1 ← phi( f55/(byte) f56::x#0 ) + (byte) f57::x#0 ← (byte) f56::x#1 + call f57 + (byte) f57::return#0 ← (byte) f57::return#2 + to:f56::@2 +f56::@2: scope:[f56] from f56 + (byte) f57::return#3 ← phi( f56/(byte) f57::return#0 ) + (byte~) f56::$0 ← (byte) f57::return#3 + (byte/signed word/word/dword/signed dword~) f56::$1 ← (byte~) f56::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f56::return#1 ← (byte/signed word/word/dword/signed dword~) f56::$1 + to:f56::@return +f56::@return: scope:[f56] from f56::@2 + (byte) f56::return#4 ← phi( f56::@2/(byte) f56::return#1 ) + (byte) f56::return#2 ← (byte) f56::return#4 + return + to:@return +f57: scope:[f57] from f56 + (byte) f57::x#1 ← phi( f56/(byte) f57::x#0 ) + (byte) f58::x#0 ← (byte) f57::x#1 + call f58 + (byte) f58::return#0 ← (byte) f58::return#2 + to:f57::@2 +f57::@2: scope:[f57] from f57 + (byte) f58::return#3 ← phi( f57/(byte) f58::return#0 ) + (byte~) f57::$0 ← (byte) f58::return#3 + (byte/signed word/word/dword/signed dword~) f57::$1 ← (byte~) f57::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f57::return#1 ← (byte/signed word/word/dword/signed dword~) f57::$1 + to:f57::@return +f57::@return: scope:[f57] from f57::@2 + (byte) f57::return#4 ← phi( f57::@2/(byte) f57::return#1 ) + (byte) f57::return#2 ← (byte) f57::return#4 + return + to:@return +f58: scope:[f58] from f57 + (byte) f58::x#1 ← phi( f57/(byte) f58::x#0 ) + (byte) f59::x#0 ← (byte) f58::x#1 + call f59 + (byte) f59::return#0 ← (byte) f59::return#2 + to:f58::@2 +f58::@2: scope:[f58] from f58 + (byte) f59::return#3 ← phi( f58/(byte) f59::return#0 ) + (byte~) f58::$0 ← (byte) f59::return#3 + (byte/signed word/word/dword/signed dword~) f58::$1 ← (byte~) f58::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f58::return#1 ← (byte/signed word/word/dword/signed dword~) f58::$1 + to:f58::@return +f58::@return: scope:[f58] from f58::@2 + (byte) f58::return#4 ← phi( f58::@2/(byte) f58::return#1 ) + (byte) f58::return#2 ← (byte) f58::return#4 + return + to:@return +f59: scope:[f59] from f58 + (byte) f59::x#1 ← phi( f58/(byte) f59::x#0 ) + (byte) f60::x#0 ← (byte) f59::x#1 + call f60 + (byte) f60::return#0 ← (byte) f60::return#2 + to:f59::@2 +f59::@2: scope:[f59] from f59 + (byte) f60::return#3 ← phi( f59/(byte) f60::return#0 ) + (byte~) f59::$0 ← (byte) f60::return#3 + (byte/signed word/word/dword/signed dword~) f59::$1 ← (byte~) f59::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f59::return#1 ← (byte/signed word/word/dword/signed dword~) f59::$1 + to:f59::@return +f59::@return: scope:[f59] from f59::@2 + (byte) f59::return#4 ← phi( f59::@2/(byte) f59::return#1 ) + (byte) f59::return#2 ← (byte) f59::return#4 + return + to:@return +f60: scope:[f60] from f59 + (byte) f60::x#1 ← phi( f59/(byte) f60::x#0 ) + (byte) f61::x#0 ← (byte) f60::x#1 + call f61 + (byte) f61::return#0 ← (byte) f61::return#2 + to:f60::@2 +f60::@2: scope:[f60] from f60 + (byte) f61::return#3 ← phi( f60/(byte) f61::return#0 ) + (byte~) f60::$0 ← (byte) f61::return#3 + (byte/signed word/word/dword/signed dword~) f60::$1 ← (byte~) f60::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f60::return#1 ← (byte/signed word/word/dword/signed dword~) f60::$1 + to:f60::@return +f60::@return: scope:[f60] from f60::@2 + (byte) f60::return#4 ← phi( f60::@2/(byte) f60::return#1 ) + (byte) f60::return#2 ← (byte) f60::return#4 + return + to:@return +f61: scope:[f61] from f60 + (byte) f61::x#1 ← phi( f60/(byte) f61::x#0 ) + (byte) f62::x#0 ← (byte) f61::x#1 + call f62 + (byte) f62::return#0 ← (byte) f62::return#2 + to:f61::@2 +f61::@2: scope:[f61] from f61 + (byte) f62::return#3 ← phi( f61/(byte) f62::return#0 ) + (byte~) f61::$0 ← (byte) f62::return#3 + (byte/signed word/word/dword/signed dword~) f61::$1 ← (byte~) f61::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f61::return#1 ← (byte/signed word/word/dword/signed dword~) f61::$1 + to:f61::@return +f61::@return: scope:[f61] from f61::@2 + (byte) f61::return#4 ← phi( f61::@2/(byte) f61::return#1 ) + (byte) f61::return#2 ← (byte) f61::return#4 + return + to:@return +f62: scope:[f62] from f61 + (byte) f62::x#1 ← phi( f61/(byte) f62::x#0 ) + (byte) f63::x#0 ← (byte) f62::x#1 + call f63 + (byte) f63::return#0 ← (byte) f63::return#2 + to:f62::@2 +f62::@2: scope:[f62] from f62 + (byte) f63::return#3 ← phi( f62/(byte) f63::return#0 ) + (byte~) f62::$0 ← (byte) f63::return#3 + (byte/signed word/word/dword/signed dword~) f62::$1 ← (byte~) f62::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f62::return#1 ← (byte/signed word/word/dword/signed dword~) f62::$1 + to:f62::@return +f62::@return: scope:[f62] from f62::@2 + (byte) f62::return#4 ← phi( f62::@2/(byte) f62::return#1 ) + (byte) f62::return#2 ← (byte) f62::return#4 + return + to:@return +f63: scope:[f63] from f62 + (byte) f63::x#1 ← phi( f62/(byte) f63::x#0 ) + (byte) f64::x#0 ← (byte) f63::x#1 + call f64 + (byte) f64::return#0 ← (byte) f64::return#2 + to:f63::@2 +f63::@2: scope:[f63] from f63 + (byte) f64::return#3 ← phi( f63/(byte) f64::return#0 ) + (byte~) f63::$0 ← (byte) f64::return#3 + (byte/signed word/word/dword/signed dword~) f63::$1 ← (byte~) f63::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f63::return#1 ← (byte/signed word/word/dword/signed dword~) f63::$1 + to:f63::@return +f63::@return: scope:[f63] from f63::@2 + (byte) f63::return#4 ← phi( f63::@2/(byte) f63::return#1 ) + (byte) f63::return#2 ← (byte) f63::return#4 + return + to:@return +f64: scope:[f64] from f63 + (byte) f64::x#1 ← phi( f63/(byte) f64::x#0 ) + (byte) f65::x#0 ← (byte) f64::x#1 + call f65 + (byte) f65::return#0 ← (byte) f65::return#2 + to:f64::@2 +f64::@2: scope:[f64] from f64 + (byte) f65::return#3 ← phi( f64/(byte) f65::return#0 ) + (byte~) f64::$0 ← (byte) f65::return#3 + (byte/signed word/word/dword/signed dword~) f64::$1 ← (byte~) f64::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f64::return#1 ← (byte/signed word/word/dword/signed dword~) f64::$1 + to:f64::@return +f64::@return: scope:[f64] from f64::@2 + (byte) f64::return#4 ← phi( f64::@2/(byte) f64::return#1 ) + (byte) f64::return#2 ← (byte) f64::return#4 + return + to:@return +f65: scope:[f65] from f64 + (byte) f65::x#1 ← phi( f64/(byte) f65::x#0 ) + (byte) f66::x#0 ← (byte) f65::x#1 + call f66 + (byte) f66::return#0 ← (byte) f66::return#2 + to:f65::@2 +f65::@2: scope:[f65] from f65 + (byte) f66::return#3 ← phi( f65/(byte) f66::return#0 ) + (byte~) f65::$0 ← (byte) f66::return#3 + (byte/signed word/word/dword/signed dword~) f65::$1 ← (byte~) f65::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f65::return#1 ← (byte/signed word/word/dword/signed dword~) f65::$1 + to:f65::@return +f65::@return: scope:[f65] from f65::@2 + (byte) f65::return#4 ← phi( f65::@2/(byte) f65::return#1 ) + (byte) f65::return#2 ← (byte) f65::return#4 + return + to:@return +f66: scope:[f66] from f65 + (byte) f66::x#1 ← phi( f65/(byte) f66::x#0 ) + (byte) f67::x#0 ← (byte) f66::x#1 + call f67 + (byte) f67::return#0 ← (byte) f67::return#2 + to:f66::@2 +f66::@2: scope:[f66] from f66 + (byte) f67::return#3 ← phi( f66/(byte) f67::return#0 ) + (byte~) f66::$0 ← (byte) f67::return#3 + (byte/signed word/word/dword/signed dword~) f66::$1 ← (byte~) f66::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f66::return#1 ← (byte/signed word/word/dword/signed dword~) f66::$1 + to:f66::@return +f66::@return: scope:[f66] from f66::@2 + (byte) f66::return#4 ← phi( f66::@2/(byte) f66::return#1 ) + (byte) f66::return#2 ← (byte) f66::return#4 + return + to:@return +f67: scope:[f67] from f66 + (byte) f67::x#1 ← phi( f66/(byte) f67::x#0 ) + (byte) f68::x#0 ← (byte) f67::x#1 + call f68 + (byte) f68::return#0 ← (byte) f68::return#2 + to:f67::@2 +f67::@2: scope:[f67] from f67 + (byte) f68::return#3 ← phi( f67/(byte) f68::return#0 ) + (byte~) f67::$0 ← (byte) f68::return#3 + (byte/signed word/word/dword/signed dword~) f67::$1 ← (byte~) f67::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f67::return#1 ← (byte/signed word/word/dword/signed dword~) f67::$1 + to:f67::@return +f67::@return: scope:[f67] from f67::@2 + (byte) f67::return#4 ← phi( f67::@2/(byte) f67::return#1 ) + (byte) f67::return#2 ← (byte) f67::return#4 + return + to:@return +f68: scope:[f68] from f67 + (byte) f68::x#1 ← phi( f67/(byte) f68::x#0 ) + (byte) f69::x#0 ← (byte) f68::x#1 + call f69 + (byte) f69::return#0 ← (byte) f69::return#2 + to:f68::@2 +f68::@2: scope:[f68] from f68 + (byte) f69::return#3 ← phi( f68/(byte) f69::return#0 ) + (byte~) f68::$0 ← (byte) f69::return#3 + (byte/signed word/word/dword/signed dword~) f68::$1 ← (byte~) f68::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f68::return#1 ← (byte/signed word/word/dword/signed dword~) f68::$1 + to:f68::@return +f68::@return: scope:[f68] from f68::@2 + (byte) f68::return#4 ← phi( f68::@2/(byte) f68::return#1 ) + (byte) f68::return#2 ← (byte) f68::return#4 + return + to:@return +f69: scope:[f69] from f68 + (byte) f69::x#1 ← phi( f68/(byte) f69::x#0 ) + (byte) f70::x#0 ← (byte) f69::x#1 + call f70 + (byte) f70::return#0 ← (byte) f70::return#2 + to:f69::@2 +f69::@2: scope:[f69] from f69 + (byte) f70::return#3 ← phi( f69/(byte) f70::return#0 ) + (byte~) f69::$0 ← (byte) f70::return#3 + (byte/signed word/word/dword/signed dword~) f69::$1 ← (byte~) f69::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f69::return#1 ← (byte/signed word/word/dword/signed dword~) f69::$1 + to:f69::@return +f69::@return: scope:[f69] from f69::@2 + (byte) f69::return#4 ← phi( f69::@2/(byte) f69::return#1 ) + (byte) f69::return#2 ← (byte) f69::return#4 + return + to:@return +f70: scope:[f70] from f69 + (byte) f70::x#1 ← phi( f69/(byte) f70::x#0 ) + (byte) f71::x#0 ← (byte) f70::x#1 + call f71 + (byte) f71::return#0 ← (byte) f71::return#2 + to:f70::@2 +f70::@2: scope:[f70] from f70 + (byte) f71::return#3 ← phi( f70/(byte) f71::return#0 ) + (byte~) f70::$0 ← (byte) f71::return#3 + (byte/signed word/word/dword/signed dword~) f70::$1 ← (byte~) f70::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f70::return#1 ← (byte/signed word/word/dword/signed dword~) f70::$1 + to:f70::@return +f70::@return: scope:[f70] from f70::@2 + (byte) f70::return#4 ← phi( f70::@2/(byte) f70::return#1 ) + (byte) f70::return#2 ← (byte) f70::return#4 + return + to:@return +f71: scope:[f71] from f70 + (byte) f71::x#1 ← phi( f70/(byte) f71::x#0 ) + (byte) f72::x#0 ← (byte) f71::x#1 + call f72 + (byte) f72::return#0 ← (byte) f72::return#2 + to:f71::@2 +f71::@2: scope:[f71] from f71 + (byte) f72::return#3 ← phi( f71/(byte) f72::return#0 ) + (byte~) f71::$0 ← (byte) f72::return#3 + (byte/signed word/word/dword/signed dword~) f71::$1 ← (byte~) f71::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f71::return#1 ← (byte/signed word/word/dword/signed dword~) f71::$1 + to:f71::@return +f71::@return: scope:[f71] from f71::@2 + (byte) f71::return#4 ← phi( f71::@2/(byte) f71::return#1 ) + (byte) f71::return#2 ← (byte) f71::return#4 + return + to:@return +f72: scope:[f72] from f71 + (byte) f72::x#1 ← phi( f71/(byte) f72::x#0 ) + (byte) f73::x#0 ← (byte) f72::x#1 + call f73 + (byte) f73::return#0 ← (byte) f73::return#2 + to:f72::@2 +f72::@2: scope:[f72] from f72 + (byte) f73::return#3 ← phi( f72/(byte) f73::return#0 ) + (byte~) f72::$0 ← (byte) f73::return#3 + (byte/signed word/word/dword/signed dword~) f72::$1 ← (byte~) f72::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f72::return#1 ← (byte/signed word/word/dword/signed dword~) f72::$1 + to:f72::@return +f72::@return: scope:[f72] from f72::@2 + (byte) f72::return#4 ← phi( f72::@2/(byte) f72::return#1 ) + (byte) f72::return#2 ← (byte) f72::return#4 + return + to:@return +f73: scope:[f73] from f72 + (byte) f73::x#1 ← phi( f72/(byte) f73::x#0 ) + (byte) f74::x#0 ← (byte) f73::x#1 + call f74 + (byte) f74::return#0 ← (byte) f74::return#2 + to:f73::@2 +f73::@2: scope:[f73] from f73 + (byte) f74::return#3 ← phi( f73/(byte) f74::return#0 ) + (byte~) f73::$0 ← (byte) f74::return#3 + (byte/signed word/word/dword/signed dword~) f73::$1 ← (byte~) f73::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f73::return#1 ← (byte/signed word/word/dword/signed dword~) f73::$1 + to:f73::@return +f73::@return: scope:[f73] from f73::@2 + (byte) f73::return#4 ← phi( f73::@2/(byte) f73::return#1 ) + (byte) f73::return#2 ← (byte) f73::return#4 + return + to:@return +f74: scope:[f74] from f73 + (byte) f74::x#1 ← phi( f73/(byte) f74::x#0 ) + (byte) f75::x#0 ← (byte) f74::x#1 + call f75 + (byte) f75::return#0 ← (byte) f75::return#2 + to:f74::@2 +f74::@2: scope:[f74] from f74 + (byte) f75::return#3 ← phi( f74/(byte) f75::return#0 ) + (byte~) f74::$0 ← (byte) f75::return#3 + (byte/signed word/word/dword/signed dword~) f74::$1 ← (byte~) f74::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f74::return#1 ← (byte/signed word/word/dword/signed dword~) f74::$1 + to:f74::@return +f74::@return: scope:[f74] from f74::@2 + (byte) f74::return#4 ← phi( f74::@2/(byte) f74::return#1 ) + (byte) f74::return#2 ← (byte) f74::return#4 + return + to:@return +f75: scope:[f75] from f74 + (byte) f75::x#1 ← phi( f74/(byte) f75::x#0 ) + (byte) f76::x#0 ← (byte) f75::x#1 + call f76 + (byte) f76::return#0 ← (byte) f76::return#2 + to:f75::@2 +f75::@2: scope:[f75] from f75 + (byte) f76::return#3 ← phi( f75/(byte) f76::return#0 ) + (byte~) f75::$0 ← (byte) f76::return#3 + (byte/signed word/word/dword/signed dword~) f75::$1 ← (byte~) f75::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f75::return#1 ← (byte/signed word/word/dword/signed dword~) f75::$1 + to:f75::@return +f75::@return: scope:[f75] from f75::@2 + (byte) f75::return#4 ← phi( f75::@2/(byte) f75::return#1 ) + (byte) f75::return#2 ← (byte) f75::return#4 + return + to:@return +f76: scope:[f76] from f75 + (byte) f76::x#1 ← phi( f75/(byte) f76::x#0 ) + (byte) f77::x#0 ← (byte) f76::x#1 + call f77 + (byte) f77::return#0 ← (byte) f77::return#2 + to:f76::@2 +f76::@2: scope:[f76] from f76 + (byte) f77::return#3 ← phi( f76/(byte) f77::return#0 ) + (byte~) f76::$0 ← (byte) f77::return#3 + (byte/signed word/word/dword/signed dword~) f76::$1 ← (byte~) f76::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f76::return#1 ← (byte/signed word/word/dword/signed dword~) f76::$1 + to:f76::@return +f76::@return: scope:[f76] from f76::@2 + (byte) f76::return#4 ← phi( f76::@2/(byte) f76::return#1 ) + (byte) f76::return#2 ← (byte) f76::return#4 + return + to:@return +f77: scope:[f77] from f76 + (byte) f77::x#1 ← phi( f76/(byte) f77::x#0 ) + (byte) f78::x#0 ← (byte) f77::x#1 + call f78 + (byte) f78::return#0 ← (byte) f78::return#2 + to:f77::@2 +f77::@2: scope:[f77] from f77 + (byte) f78::return#3 ← phi( f77/(byte) f78::return#0 ) + (byte~) f77::$0 ← (byte) f78::return#3 + (byte/signed word/word/dword/signed dword~) f77::$1 ← (byte~) f77::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f77::return#1 ← (byte/signed word/word/dword/signed dword~) f77::$1 + to:f77::@return +f77::@return: scope:[f77] from f77::@2 + (byte) f77::return#4 ← phi( f77::@2/(byte) f77::return#1 ) + (byte) f77::return#2 ← (byte) f77::return#4 + return + to:@return +f78: scope:[f78] from f77 + (byte) f78::x#1 ← phi( f77/(byte) f78::x#0 ) + (byte) f79::x#0 ← (byte) f78::x#1 + call f79 + (byte) f79::return#0 ← (byte) f79::return#2 + to:f78::@2 +f78::@2: scope:[f78] from f78 + (byte) f79::return#3 ← phi( f78/(byte) f79::return#0 ) + (byte~) f78::$0 ← (byte) f79::return#3 + (byte/signed word/word/dword/signed dword~) f78::$1 ← (byte~) f78::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f78::return#1 ← (byte/signed word/word/dword/signed dword~) f78::$1 + to:f78::@return +f78::@return: scope:[f78] from f78::@2 + (byte) f78::return#4 ← phi( f78::@2/(byte) f78::return#1 ) + (byte) f78::return#2 ← (byte) f78::return#4 + return + to:@return +f79: scope:[f79] from f78 + (byte) f79::x#1 ← phi( f78/(byte) f79::x#0 ) + (byte) f80::x#0 ← (byte) f79::x#1 + call f80 + (byte) f80::return#0 ← (byte) f80::return#2 + to:f79::@2 +f79::@2: scope:[f79] from f79 + (byte) f80::return#3 ← phi( f79/(byte) f80::return#0 ) + (byte~) f79::$0 ← (byte) f80::return#3 + (byte/signed word/word/dword/signed dword~) f79::$1 ← (byte~) f79::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f79::return#1 ← (byte/signed word/word/dword/signed dword~) f79::$1 + to:f79::@return +f79::@return: scope:[f79] from f79::@2 + (byte) f79::return#4 ← phi( f79::@2/(byte) f79::return#1 ) + (byte) f79::return#2 ← (byte) f79::return#4 + return + to:@return +f80: scope:[f80] from f79 + (byte) f80::x#1 ← phi( f79/(byte) f80::x#0 ) + (byte) f81::x#0 ← (byte) f80::x#1 + call f81 + (byte) f81::return#0 ← (byte) f81::return#2 + to:f80::@2 +f80::@2: scope:[f80] from f80 + (byte) f81::return#3 ← phi( f80/(byte) f81::return#0 ) + (byte~) f80::$0 ← (byte) f81::return#3 + (byte/signed word/word/dword/signed dword~) f80::$1 ← (byte~) f80::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f80::return#1 ← (byte/signed word/word/dword/signed dword~) f80::$1 + to:f80::@return +f80::@return: scope:[f80] from f80::@2 + (byte) f80::return#4 ← phi( f80::@2/(byte) f80::return#1 ) + (byte) f80::return#2 ← (byte) f80::return#4 + return + to:@return +f81: scope:[f81] from f80 + (byte) f81::x#1 ← phi( f80/(byte) f81::x#0 ) + (byte) f82::x#0 ← (byte) f81::x#1 + call f82 + (byte) f82::return#0 ← (byte) f82::return#2 + to:f81::@2 +f81::@2: scope:[f81] from f81 + (byte) f82::return#3 ← phi( f81/(byte) f82::return#0 ) + (byte~) f81::$0 ← (byte) f82::return#3 + (byte/signed word/word/dword/signed dword~) f81::$1 ← (byte~) f81::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f81::return#1 ← (byte/signed word/word/dword/signed dword~) f81::$1 + to:f81::@return +f81::@return: scope:[f81] from f81::@2 + (byte) f81::return#4 ← phi( f81::@2/(byte) f81::return#1 ) + (byte) f81::return#2 ← (byte) f81::return#4 + return + to:@return +f82: scope:[f82] from f81 + (byte) f82::x#1 ← phi( f81/(byte) f82::x#0 ) + (byte) f83::x#0 ← (byte) f82::x#1 + call f83 + (byte) f83::return#0 ← (byte) f83::return#2 + to:f82::@2 +f82::@2: scope:[f82] from f82 + (byte) f83::return#3 ← phi( f82/(byte) f83::return#0 ) + (byte~) f82::$0 ← (byte) f83::return#3 + (byte/signed word/word/dword/signed dword~) f82::$1 ← (byte~) f82::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f82::return#1 ← (byte/signed word/word/dword/signed dword~) f82::$1 + to:f82::@return +f82::@return: scope:[f82] from f82::@2 + (byte) f82::return#4 ← phi( f82::@2/(byte) f82::return#1 ) + (byte) f82::return#2 ← (byte) f82::return#4 + return + to:@return +f83: scope:[f83] from f82 + (byte) f83::x#1 ← phi( f82/(byte) f83::x#0 ) + (byte) f84::x#0 ← (byte) f83::x#1 + call f84 + (byte) f84::return#0 ← (byte) f84::return#2 + to:f83::@2 +f83::@2: scope:[f83] from f83 + (byte) f84::return#3 ← phi( f83/(byte) f84::return#0 ) + (byte~) f83::$0 ← (byte) f84::return#3 + (byte/signed word/word/dword/signed dword~) f83::$1 ← (byte~) f83::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f83::return#1 ← (byte/signed word/word/dword/signed dword~) f83::$1 + to:f83::@return +f83::@return: scope:[f83] from f83::@2 + (byte) f83::return#4 ← phi( f83::@2/(byte) f83::return#1 ) + (byte) f83::return#2 ← (byte) f83::return#4 + return + to:@return +f84: scope:[f84] from f83 + (byte) f84::x#1 ← phi( f83/(byte) f84::x#0 ) + (byte) f85::x#0 ← (byte) f84::x#1 + call f85 + (byte) f85::return#0 ← (byte) f85::return#2 + to:f84::@2 +f84::@2: scope:[f84] from f84 + (byte) f85::return#3 ← phi( f84/(byte) f85::return#0 ) + (byte~) f84::$0 ← (byte) f85::return#3 + (byte/signed word/word/dword/signed dword~) f84::$1 ← (byte~) f84::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f84::return#1 ← (byte/signed word/word/dword/signed dword~) f84::$1 + to:f84::@return +f84::@return: scope:[f84] from f84::@2 + (byte) f84::return#4 ← phi( f84::@2/(byte) f84::return#1 ) + (byte) f84::return#2 ← (byte) f84::return#4 + return + to:@return +f85: scope:[f85] from f84 + (byte) f85::x#1 ← phi( f84/(byte) f85::x#0 ) + (byte) f86::x#0 ← (byte) f85::x#1 + call f86 + (byte) f86::return#0 ← (byte) f86::return#2 + to:f85::@2 +f85::@2: scope:[f85] from f85 + (byte) f86::return#3 ← phi( f85/(byte) f86::return#0 ) + (byte~) f85::$0 ← (byte) f86::return#3 + (byte/signed word/word/dword/signed dword~) f85::$1 ← (byte~) f85::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f85::return#1 ← (byte/signed word/word/dword/signed dword~) f85::$1 + to:f85::@return +f85::@return: scope:[f85] from f85::@2 + (byte) f85::return#4 ← phi( f85::@2/(byte) f85::return#1 ) + (byte) f85::return#2 ← (byte) f85::return#4 + return + to:@return +f86: scope:[f86] from f85 + (byte) f86::x#1 ← phi( f85/(byte) f86::x#0 ) + (byte) f87::x#0 ← (byte) f86::x#1 + call f87 + (byte) f87::return#0 ← (byte) f87::return#2 + to:f86::@2 +f86::@2: scope:[f86] from f86 + (byte) f87::return#3 ← phi( f86/(byte) f87::return#0 ) + (byte~) f86::$0 ← (byte) f87::return#3 + (byte/signed word/word/dword/signed dword~) f86::$1 ← (byte~) f86::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f86::return#1 ← (byte/signed word/word/dword/signed dword~) f86::$1 + to:f86::@return +f86::@return: scope:[f86] from f86::@2 + (byte) f86::return#4 ← phi( f86::@2/(byte) f86::return#1 ) + (byte) f86::return#2 ← (byte) f86::return#4 + return + to:@return +f87: scope:[f87] from f86 + (byte) f87::x#1 ← phi( f86/(byte) f87::x#0 ) + (byte) f88::x#0 ← (byte) f87::x#1 + call f88 + (byte) f88::return#0 ← (byte) f88::return#2 + to:f87::@2 +f87::@2: scope:[f87] from f87 + (byte) f88::return#3 ← phi( f87/(byte) f88::return#0 ) + (byte~) f87::$0 ← (byte) f88::return#3 + (byte/signed word/word/dword/signed dword~) f87::$1 ← (byte~) f87::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f87::return#1 ← (byte/signed word/word/dword/signed dword~) f87::$1 + to:f87::@return +f87::@return: scope:[f87] from f87::@2 + (byte) f87::return#4 ← phi( f87::@2/(byte) f87::return#1 ) + (byte) f87::return#2 ← (byte) f87::return#4 + return + to:@return +f88: scope:[f88] from f87 + (byte) f88::x#1 ← phi( f87/(byte) f88::x#0 ) + (byte) f89::x#0 ← (byte) f88::x#1 + call f89 + (byte) f89::return#0 ← (byte) f89::return#2 + to:f88::@2 +f88::@2: scope:[f88] from f88 + (byte) f89::return#3 ← phi( f88/(byte) f89::return#0 ) + (byte~) f88::$0 ← (byte) f89::return#3 + (byte/signed word/word/dword/signed dword~) f88::$1 ← (byte~) f88::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f88::return#1 ← (byte/signed word/word/dword/signed dword~) f88::$1 + to:f88::@return +f88::@return: scope:[f88] from f88::@2 + (byte) f88::return#4 ← phi( f88::@2/(byte) f88::return#1 ) + (byte) f88::return#2 ← (byte) f88::return#4 + return + to:@return +f89: scope:[f89] from f88 + (byte) f89::x#1 ← phi( f88/(byte) f89::x#0 ) + (byte) f90::x#0 ← (byte) f89::x#1 + call f90 + (byte) f90::return#0 ← (byte) f90::return#2 + to:f89::@2 +f89::@2: scope:[f89] from f89 + (byte) f90::return#3 ← phi( f89/(byte) f90::return#0 ) + (byte~) f89::$0 ← (byte) f90::return#3 + (byte/signed word/word/dword/signed dword~) f89::$1 ← (byte~) f89::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f89::return#1 ← (byte/signed word/word/dword/signed dword~) f89::$1 + to:f89::@return +f89::@return: scope:[f89] from f89::@2 + (byte) f89::return#4 ← phi( f89::@2/(byte) f89::return#1 ) + (byte) f89::return#2 ← (byte) f89::return#4 + return + to:@return +f90: scope:[f90] from f89 + (byte) f90::x#1 ← phi( f89/(byte) f90::x#0 ) + (byte) f91::x#0 ← (byte) f90::x#1 + call f91 + (byte) f91::return#0 ← (byte) f91::return#2 + to:f90::@2 +f90::@2: scope:[f90] from f90 + (byte) f91::return#3 ← phi( f90/(byte) f91::return#0 ) + (byte~) f90::$0 ← (byte) f91::return#3 + (byte/signed word/word/dword/signed dword~) f90::$1 ← (byte~) f90::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f90::return#1 ← (byte/signed word/word/dword/signed dword~) f90::$1 + to:f90::@return +f90::@return: scope:[f90] from f90::@2 + (byte) f90::return#4 ← phi( f90::@2/(byte) f90::return#1 ) + (byte) f90::return#2 ← (byte) f90::return#4 + return + to:@return +f91: scope:[f91] from f90 + (byte) f91::x#1 ← phi( f90/(byte) f91::x#0 ) + (byte) f92::x#0 ← (byte) f91::x#1 + call f92 + (byte) f92::return#0 ← (byte) f92::return#2 + to:f91::@2 +f91::@2: scope:[f91] from f91 + (byte) f92::return#3 ← phi( f91/(byte) f92::return#0 ) + (byte~) f91::$0 ← (byte) f92::return#3 + (byte/signed word/word/dword/signed dword~) f91::$1 ← (byte~) f91::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f91::return#1 ← (byte/signed word/word/dword/signed dword~) f91::$1 + to:f91::@return +f91::@return: scope:[f91] from f91::@2 + (byte) f91::return#4 ← phi( f91::@2/(byte) f91::return#1 ) + (byte) f91::return#2 ← (byte) f91::return#4 + return + to:@return +f92: scope:[f92] from f91 + (byte) f92::x#1 ← phi( f91/(byte) f92::x#0 ) + (byte) f93::x#0 ← (byte) f92::x#1 + call f93 + (byte) f93::return#0 ← (byte) f93::return#2 + to:f92::@2 +f92::@2: scope:[f92] from f92 + (byte) f93::return#3 ← phi( f92/(byte) f93::return#0 ) + (byte~) f92::$0 ← (byte) f93::return#3 + (byte/signed word/word/dword/signed dword~) f92::$1 ← (byte~) f92::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f92::return#1 ← (byte/signed word/word/dword/signed dword~) f92::$1 + to:f92::@return +f92::@return: scope:[f92] from f92::@2 + (byte) f92::return#4 ← phi( f92::@2/(byte) f92::return#1 ) + (byte) f92::return#2 ← (byte) f92::return#4 + return + to:@return +f93: scope:[f93] from f92 + (byte) f93::x#1 ← phi( f92/(byte) f93::x#0 ) + (byte) f94::x#0 ← (byte) f93::x#1 + call f94 + (byte) f94::return#0 ← (byte) f94::return#2 + to:f93::@2 +f93::@2: scope:[f93] from f93 + (byte) f94::return#3 ← phi( f93/(byte) f94::return#0 ) + (byte~) f93::$0 ← (byte) f94::return#3 + (byte/signed word/word/dword/signed dword~) f93::$1 ← (byte~) f93::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f93::return#1 ← (byte/signed word/word/dword/signed dword~) f93::$1 + to:f93::@return +f93::@return: scope:[f93] from f93::@2 + (byte) f93::return#4 ← phi( f93::@2/(byte) f93::return#1 ) + (byte) f93::return#2 ← (byte) f93::return#4 + return + to:@return +f94: scope:[f94] from f93 + (byte) f94::x#1 ← phi( f93/(byte) f94::x#0 ) + (byte) f95::x#0 ← (byte) f94::x#1 + call f95 + (byte) f95::return#0 ← (byte) f95::return#2 + to:f94::@2 +f94::@2: scope:[f94] from f94 + (byte) f95::return#3 ← phi( f94/(byte) f95::return#0 ) + (byte~) f94::$0 ← (byte) f95::return#3 + (byte/signed word/word/dword/signed dword~) f94::$1 ← (byte~) f94::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f94::return#1 ← (byte/signed word/word/dword/signed dword~) f94::$1 + to:f94::@return +f94::@return: scope:[f94] from f94::@2 + (byte) f94::return#4 ← phi( f94::@2/(byte) f94::return#1 ) + (byte) f94::return#2 ← (byte) f94::return#4 + return + to:@return +f95: scope:[f95] from f94 + (byte) f95::x#1 ← phi( f94/(byte) f95::x#0 ) + (byte) f96::x#0 ← (byte) f95::x#1 + call f96 + (byte) f96::return#0 ← (byte) f96::return#2 + to:f95::@2 +f95::@2: scope:[f95] from f95 + (byte) f96::return#3 ← phi( f95/(byte) f96::return#0 ) + (byte~) f95::$0 ← (byte) f96::return#3 + (byte/signed word/word/dword/signed dword~) f95::$1 ← (byte~) f95::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f95::return#1 ← (byte/signed word/word/dword/signed dword~) f95::$1 + to:f95::@return +f95::@return: scope:[f95] from f95::@2 + (byte) f95::return#4 ← phi( f95::@2/(byte) f95::return#1 ) + (byte) f95::return#2 ← (byte) f95::return#4 + return + to:@return +f96: scope:[f96] from f95 + (byte) f96::x#1 ← phi( f95/(byte) f96::x#0 ) + (byte) f97::x#0 ← (byte) f96::x#1 + call f97 + (byte) f97::return#0 ← (byte) f97::return#2 + to:f96::@2 +f96::@2: scope:[f96] from f96 + (byte) f97::return#3 ← phi( f96/(byte) f97::return#0 ) + (byte~) f96::$0 ← (byte) f97::return#3 + (byte/signed word/word/dword/signed dword~) f96::$1 ← (byte~) f96::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f96::return#1 ← (byte/signed word/word/dword/signed dword~) f96::$1 + to:f96::@return +f96::@return: scope:[f96] from f96::@2 + (byte) f96::return#4 ← phi( f96::@2/(byte) f96::return#1 ) + (byte) f96::return#2 ← (byte) f96::return#4 + return + to:@return +f97: scope:[f97] from f96 + (byte) f97::x#1 ← phi( f96/(byte) f97::x#0 ) + (byte) f98::x#0 ← (byte) f97::x#1 + call f98 + (byte) f98::return#0 ← (byte) f98::return#2 + to:f97::@2 +f97::@2: scope:[f97] from f97 + (byte) f98::return#3 ← phi( f97/(byte) f98::return#0 ) + (byte~) f97::$0 ← (byte) f98::return#3 + (byte/signed word/word/dword/signed dword~) f97::$1 ← (byte~) f97::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f97::return#1 ← (byte/signed word/word/dword/signed dword~) f97::$1 + to:f97::@return +f97::@return: scope:[f97] from f97::@2 + (byte) f97::return#4 ← phi( f97::@2/(byte) f97::return#1 ) + (byte) f97::return#2 ← (byte) f97::return#4 + return + to:@return +f98: scope:[f98] from f97 + (byte) f98::x#1 ← phi( f97/(byte) f98::x#0 ) + (byte) f99::x#0 ← (byte) f98::x#1 + call f99 + (byte) f99::return#0 ← (byte) f99::return#2 + to:f98::@2 +f98::@2: scope:[f98] from f98 + (byte) f99::return#3 ← phi( f98/(byte) f99::return#0 ) + (byte~) f98::$0 ← (byte) f99::return#3 + (byte/signed word/word/dword/signed dword~) f98::$1 ← (byte~) f98::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f98::return#1 ← (byte/signed word/word/dword/signed dword~) f98::$1 + to:f98::@return +f98::@return: scope:[f98] from f98::@2 + (byte) f98::return#4 ← phi( f98::@2/(byte) f98::return#1 ) + (byte) f98::return#2 ← (byte) f98::return#4 + return + to:@return +f99: scope:[f99] from f98 + (byte) f99::x#1 ← phi( f98/(byte) f99::x#0 ) + (byte) f100::x#0 ← (byte) f99::x#1 + call f100 + (byte) f100::return#0 ← (byte) f100::return#2 + to:f99::@2 +f99::@2: scope:[f99] from f99 + (byte) f100::return#3 ← phi( f99/(byte) f100::return#0 ) + (byte~) f99::$0 ← (byte) f100::return#3 + (byte/signed word/word/dword/signed dword~) f99::$1 ← (byte~) f99::$0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) f99::return#1 ← (byte/signed word/word/dword/signed dword~) f99::$1 + to:f99::@return +f99::@return: scope:[f99] from f99::@2 + (byte) f99::return#4 ← phi( f99::@2/(byte) f99::return#1 ) + (byte) f99::return#2 ← (byte) f99::return#4 + return + to:@return +f100: scope:[f100] from f99 + (byte) f100::x#1 ← phi( f99/(byte) f100::x#0 ) + (byte) f100::return#1 ← (byte) f100::x#1 + to:f100::@return +f100::@return: scope:[f100] from f100 + (byte) f100::return#4 ← phi( f100/(byte) f100::return#1 ) + (byte) f100::return#2 ← (byte) f100::return#4 + return + to:@return +@101: scope:[] from @begin + call main + to:@102 +@102: scope:[] from @101 + to:@end +@end: scope:[] from @102 + +SYMBOL TABLE SSA +(label) @101 +(label) @102 +(label) @begin +(label) @end +(byte()) f1((byte) f1::x) +(byte~) f1::$0 +(byte/signed word/word/dword/signed dword~) f1::$1 +(label) f1::@2 +(label) f1::@return +(byte) f1::return +(byte) f1::return#0 +(byte) f1::return#1 +(byte) f1::return#2 +(byte) f1::return#3 +(byte) f1::return#4 +(byte) f1::x +(byte) f1::x#0 +(byte) f1::x#1 +(byte()) f10((byte) f10::x) +(byte~) f10::$0 +(byte/signed word/word/dword/signed dword~) f10::$1 +(label) f10::@2 +(label) f10::@return +(byte) f10::return +(byte) f10::return#0 +(byte) f10::return#1 +(byte) f10::return#2 +(byte) f10::return#3 +(byte) f10::return#4 +(byte) f10::x +(byte) f10::x#0 +(byte) f10::x#1 +(byte()) f100((byte) f100::x) +(label) f100::@return +(byte) f100::return +(byte) f100::return#0 +(byte) f100::return#1 +(byte) f100::return#2 +(byte) f100::return#3 +(byte) f100::return#4 +(byte) f100::x +(byte) f100::x#0 +(byte) f100::x#1 +(byte()) f11((byte) f11::x) +(byte~) f11::$0 +(byte/signed word/word/dword/signed dword~) f11::$1 +(label) f11::@2 +(label) f11::@return +(byte) f11::return +(byte) f11::return#0 +(byte) f11::return#1 +(byte) f11::return#2 +(byte) f11::return#3 +(byte) f11::return#4 +(byte) f11::x +(byte) f11::x#0 +(byte) f11::x#1 +(byte()) f12((byte) f12::x) +(byte~) f12::$0 +(byte/signed word/word/dword/signed dword~) f12::$1 +(label) f12::@2 +(label) f12::@return +(byte) f12::return +(byte) f12::return#0 +(byte) f12::return#1 +(byte) f12::return#2 +(byte) f12::return#3 +(byte) f12::return#4 +(byte) f12::x +(byte) f12::x#0 +(byte) f12::x#1 +(byte()) f13((byte) f13::x) +(byte~) f13::$0 +(byte/signed word/word/dword/signed dword~) f13::$1 +(label) f13::@2 +(label) f13::@return +(byte) f13::return +(byte) f13::return#0 +(byte) f13::return#1 +(byte) f13::return#2 +(byte) f13::return#3 +(byte) f13::return#4 +(byte) f13::x +(byte) f13::x#0 +(byte) f13::x#1 +(byte()) f14((byte) f14::x) +(byte~) f14::$0 +(byte/signed word/word/dword/signed dword~) f14::$1 +(label) f14::@2 +(label) f14::@return +(byte) f14::return +(byte) f14::return#0 +(byte) f14::return#1 +(byte) f14::return#2 +(byte) f14::return#3 +(byte) f14::return#4 +(byte) f14::x +(byte) f14::x#0 +(byte) f14::x#1 +(byte()) f15((byte) f15::x) +(byte~) f15::$0 +(byte/signed word/word/dword/signed dword~) f15::$1 +(label) f15::@2 +(label) f15::@return +(byte) f15::return +(byte) f15::return#0 +(byte) f15::return#1 +(byte) f15::return#2 +(byte) f15::return#3 +(byte) f15::return#4 +(byte) f15::x +(byte) f15::x#0 +(byte) f15::x#1 +(byte()) f16((byte) f16::x) +(byte~) f16::$0 +(byte/signed word/word/dword/signed dword~) f16::$1 +(label) f16::@2 +(label) f16::@return +(byte) f16::return +(byte) f16::return#0 +(byte) f16::return#1 +(byte) f16::return#2 +(byte) f16::return#3 +(byte) f16::return#4 +(byte) f16::x +(byte) f16::x#0 +(byte) f16::x#1 +(byte()) f17((byte) f17::x) +(byte~) f17::$0 +(byte/signed word/word/dword/signed dword~) f17::$1 +(label) f17::@2 +(label) f17::@return +(byte) f17::return +(byte) f17::return#0 +(byte) f17::return#1 +(byte) f17::return#2 +(byte) f17::return#3 +(byte) f17::return#4 +(byte) f17::x +(byte) f17::x#0 +(byte) f17::x#1 +(byte()) f18((byte) f18::x) +(byte~) f18::$0 +(byte/signed word/word/dword/signed dword~) f18::$1 +(label) f18::@2 +(label) f18::@return +(byte) f18::return +(byte) f18::return#0 +(byte) f18::return#1 +(byte) f18::return#2 +(byte) f18::return#3 +(byte) f18::return#4 +(byte) f18::x +(byte) f18::x#0 +(byte) f18::x#1 +(byte()) f19((byte) f19::x) +(byte~) f19::$0 +(byte/signed word/word/dword/signed dword~) f19::$1 +(label) f19::@2 +(label) f19::@return +(byte) f19::return +(byte) f19::return#0 +(byte) f19::return#1 +(byte) f19::return#2 +(byte) f19::return#3 +(byte) f19::return#4 +(byte) f19::x +(byte) f19::x#0 +(byte) f19::x#1 +(byte()) f2((byte) f2::x) +(byte~) f2::$0 +(byte/signed word/word/dword/signed dword~) f2::$1 +(label) f2::@2 +(label) f2::@return +(byte) f2::return +(byte) f2::return#0 +(byte) f2::return#1 +(byte) f2::return#2 +(byte) f2::return#3 +(byte) f2::return#4 +(byte) f2::x +(byte) f2::x#0 +(byte) f2::x#1 +(byte()) f20((byte) f20::x) +(byte~) f20::$0 +(byte/signed word/word/dword/signed dword~) f20::$1 +(label) f20::@2 +(label) f20::@return +(byte) f20::return +(byte) f20::return#0 +(byte) f20::return#1 +(byte) f20::return#2 +(byte) f20::return#3 +(byte) f20::return#4 +(byte) f20::x +(byte) f20::x#0 +(byte) f20::x#1 +(byte()) f21((byte) f21::x) +(byte~) f21::$0 +(byte/signed word/word/dword/signed dword~) f21::$1 +(label) f21::@2 +(label) f21::@return +(byte) f21::return +(byte) f21::return#0 +(byte) f21::return#1 +(byte) f21::return#2 +(byte) f21::return#3 +(byte) f21::return#4 +(byte) f21::x +(byte) f21::x#0 +(byte) f21::x#1 +(byte()) f22((byte) f22::x) +(byte~) f22::$0 +(byte/signed word/word/dword/signed dword~) f22::$1 +(label) f22::@2 +(label) f22::@return +(byte) f22::return +(byte) f22::return#0 +(byte) f22::return#1 +(byte) f22::return#2 +(byte) f22::return#3 +(byte) f22::return#4 +(byte) f22::x +(byte) f22::x#0 +(byte) f22::x#1 +(byte()) f23((byte) f23::x) +(byte~) f23::$0 +(byte/signed word/word/dword/signed dword~) f23::$1 +(label) f23::@2 +(label) f23::@return +(byte) f23::return +(byte) f23::return#0 +(byte) f23::return#1 +(byte) f23::return#2 +(byte) f23::return#3 +(byte) f23::return#4 +(byte) f23::x +(byte) f23::x#0 +(byte) f23::x#1 +(byte()) f24((byte) f24::x) +(byte~) f24::$0 +(byte/signed word/word/dword/signed dword~) f24::$1 +(label) f24::@2 +(label) f24::@return +(byte) f24::return +(byte) f24::return#0 +(byte) f24::return#1 +(byte) f24::return#2 +(byte) f24::return#3 +(byte) f24::return#4 +(byte) f24::x +(byte) f24::x#0 +(byte) f24::x#1 +(byte()) f25((byte) f25::x) +(byte~) f25::$0 +(byte/signed word/word/dword/signed dword~) f25::$1 +(label) f25::@2 +(label) f25::@return +(byte) f25::return +(byte) f25::return#0 +(byte) f25::return#1 +(byte) f25::return#2 +(byte) f25::return#3 +(byte) f25::return#4 +(byte) f25::x +(byte) f25::x#0 +(byte) f25::x#1 +(byte()) f26((byte) f26::x) +(byte~) f26::$0 +(byte/signed word/word/dword/signed dword~) f26::$1 +(label) f26::@2 +(label) f26::@return +(byte) f26::return +(byte) f26::return#0 +(byte) f26::return#1 +(byte) f26::return#2 +(byte) f26::return#3 +(byte) f26::return#4 +(byte) f26::x +(byte) f26::x#0 +(byte) f26::x#1 +(byte()) f27((byte) f27::x) +(byte~) f27::$0 +(byte/signed word/word/dword/signed dword~) f27::$1 +(label) f27::@2 +(label) f27::@return +(byte) f27::return +(byte) f27::return#0 +(byte) f27::return#1 +(byte) f27::return#2 +(byte) f27::return#3 +(byte) f27::return#4 +(byte) f27::x +(byte) f27::x#0 +(byte) f27::x#1 +(byte()) f28((byte) f28::x) +(byte~) f28::$0 +(byte/signed word/word/dword/signed dword~) f28::$1 +(label) f28::@2 +(label) f28::@return +(byte) f28::return +(byte) f28::return#0 +(byte) f28::return#1 +(byte) f28::return#2 +(byte) f28::return#3 +(byte) f28::return#4 +(byte) f28::x +(byte) f28::x#0 +(byte) f28::x#1 +(byte()) f29((byte) f29::x) +(byte~) f29::$0 +(byte/signed word/word/dword/signed dword~) f29::$1 +(label) f29::@2 +(label) f29::@return +(byte) f29::return +(byte) f29::return#0 +(byte) f29::return#1 +(byte) f29::return#2 +(byte) f29::return#3 +(byte) f29::return#4 +(byte) f29::x +(byte) f29::x#0 +(byte) f29::x#1 +(byte()) f3((byte) f3::x) +(byte~) f3::$0 +(byte/signed word/word/dword/signed dword~) f3::$1 +(label) f3::@2 +(label) f3::@return +(byte) f3::return +(byte) f3::return#0 +(byte) f3::return#1 +(byte) f3::return#2 +(byte) f3::return#3 +(byte) f3::return#4 +(byte) f3::x +(byte) f3::x#0 +(byte) f3::x#1 +(byte()) f30((byte) f30::x) +(byte~) f30::$0 +(byte/signed word/word/dword/signed dword~) f30::$1 +(label) f30::@2 +(label) f30::@return +(byte) f30::return +(byte) f30::return#0 +(byte) f30::return#1 +(byte) f30::return#2 +(byte) f30::return#3 +(byte) f30::return#4 +(byte) f30::x +(byte) f30::x#0 +(byte) f30::x#1 +(byte()) f31((byte) f31::x) +(byte~) f31::$0 +(byte/signed word/word/dword/signed dword~) f31::$1 +(label) f31::@2 +(label) f31::@return +(byte) f31::return +(byte) f31::return#0 +(byte) f31::return#1 +(byte) f31::return#2 +(byte) f31::return#3 +(byte) f31::return#4 +(byte) f31::x +(byte) f31::x#0 +(byte) f31::x#1 +(byte()) f32((byte) f32::x) +(byte~) f32::$0 +(byte/signed word/word/dword/signed dword~) f32::$1 +(label) f32::@2 +(label) f32::@return +(byte) f32::return +(byte) f32::return#0 +(byte) f32::return#1 +(byte) f32::return#2 +(byte) f32::return#3 +(byte) f32::return#4 +(byte) f32::x +(byte) f32::x#0 +(byte) f32::x#1 +(byte()) f33((byte) f33::x) +(byte~) f33::$0 +(byte/signed word/word/dword/signed dword~) f33::$1 +(label) f33::@2 +(label) f33::@return +(byte) f33::return +(byte) f33::return#0 +(byte) f33::return#1 +(byte) f33::return#2 +(byte) f33::return#3 +(byte) f33::return#4 +(byte) f33::x +(byte) f33::x#0 +(byte) f33::x#1 +(byte()) f34((byte) f34::x) +(byte~) f34::$0 +(byte/signed word/word/dword/signed dword~) f34::$1 +(label) f34::@2 +(label) f34::@return +(byte) f34::return +(byte) f34::return#0 +(byte) f34::return#1 +(byte) f34::return#2 +(byte) f34::return#3 +(byte) f34::return#4 +(byte) f34::x +(byte) f34::x#0 +(byte) f34::x#1 +(byte()) f35((byte) f35::x) +(byte~) f35::$0 +(byte/signed word/word/dword/signed dword~) f35::$1 +(label) f35::@2 +(label) f35::@return +(byte) f35::return +(byte) f35::return#0 +(byte) f35::return#1 +(byte) f35::return#2 +(byte) f35::return#3 +(byte) f35::return#4 +(byte) f35::x +(byte) f35::x#0 +(byte) f35::x#1 +(byte()) f36((byte) f36::x) +(byte~) f36::$0 +(byte/signed word/word/dword/signed dword~) f36::$1 +(label) f36::@2 +(label) f36::@return +(byte) f36::return +(byte) f36::return#0 +(byte) f36::return#1 +(byte) f36::return#2 +(byte) f36::return#3 +(byte) f36::return#4 +(byte) f36::x +(byte) f36::x#0 +(byte) f36::x#1 +(byte()) f37((byte) f37::x) +(byte~) f37::$0 +(byte/signed word/word/dword/signed dword~) f37::$1 +(label) f37::@2 +(label) f37::@return +(byte) f37::return +(byte) f37::return#0 +(byte) f37::return#1 +(byte) f37::return#2 +(byte) f37::return#3 +(byte) f37::return#4 +(byte) f37::x +(byte) f37::x#0 +(byte) f37::x#1 +(byte()) f38((byte) f38::x) +(byte~) f38::$0 +(byte/signed word/word/dword/signed dword~) f38::$1 +(label) f38::@2 +(label) f38::@return +(byte) f38::return +(byte) f38::return#0 +(byte) f38::return#1 +(byte) f38::return#2 +(byte) f38::return#3 +(byte) f38::return#4 +(byte) f38::x +(byte) f38::x#0 +(byte) f38::x#1 +(byte()) f39((byte) f39::x) +(byte~) f39::$0 +(byte/signed word/word/dword/signed dword~) f39::$1 +(label) f39::@2 +(label) f39::@return +(byte) f39::return +(byte) f39::return#0 +(byte) f39::return#1 +(byte) f39::return#2 +(byte) f39::return#3 +(byte) f39::return#4 +(byte) f39::x +(byte) f39::x#0 +(byte) f39::x#1 +(byte()) f4((byte) f4::x) +(byte~) f4::$0 +(byte/signed word/word/dword/signed dword~) f4::$1 +(label) f4::@2 +(label) f4::@return +(byte) f4::return +(byte) f4::return#0 +(byte) f4::return#1 +(byte) f4::return#2 +(byte) f4::return#3 +(byte) f4::return#4 +(byte) f4::x +(byte) f4::x#0 +(byte) f4::x#1 +(byte()) f40((byte) f40::x) +(byte~) f40::$0 +(byte/signed word/word/dword/signed dword~) f40::$1 +(label) f40::@2 +(label) f40::@return +(byte) f40::return +(byte) f40::return#0 +(byte) f40::return#1 +(byte) f40::return#2 +(byte) f40::return#3 +(byte) f40::return#4 +(byte) f40::x +(byte) f40::x#0 +(byte) f40::x#1 +(byte()) f41((byte) f41::x) +(byte~) f41::$0 +(byte/signed word/word/dword/signed dword~) f41::$1 +(label) f41::@2 +(label) f41::@return +(byte) f41::return +(byte) f41::return#0 +(byte) f41::return#1 +(byte) f41::return#2 +(byte) f41::return#3 +(byte) f41::return#4 +(byte) f41::x +(byte) f41::x#0 +(byte) f41::x#1 +(byte()) f42((byte) f42::x) +(byte~) f42::$0 +(byte/signed word/word/dword/signed dword~) f42::$1 +(label) f42::@2 +(label) f42::@return +(byte) f42::return +(byte) f42::return#0 +(byte) f42::return#1 +(byte) f42::return#2 +(byte) f42::return#3 +(byte) f42::return#4 +(byte) f42::x +(byte) f42::x#0 +(byte) f42::x#1 +(byte()) f43((byte) f43::x) +(byte~) f43::$0 +(byte/signed word/word/dword/signed dword~) f43::$1 +(label) f43::@2 +(label) f43::@return +(byte) f43::return +(byte) f43::return#0 +(byte) f43::return#1 +(byte) f43::return#2 +(byte) f43::return#3 +(byte) f43::return#4 +(byte) f43::x +(byte) f43::x#0 +(byte) f43::x#1 +(byte()) f44((byte) f44::x) +(byte~) f44::$0 +(byte/signed word/word/dword/signed dword~) f44::$1 +(label) f44::@2 +(label) f44::@return +(byte) f44::return +(byte) f44::return#0 +(byte) f44::return#1 +(byte) f44::return#2 +(byte) f44::return#3 +(byte) f44::return#4 +(byte) f44::x +(byte) f44::x#0 +(byte) f44::x#1 +(byte()) f45((byte) f45::x) +(byte~) f45::$0 +(byte/signed word/word/dword/signed dword~) f45::$1 +(label) f45::@2 +(label) f45::@return +(byte) f45::return +(byte) f45::return#0 +(byte) f45::return#1 +(byte) f45::return#2 +(byte) f45::return#3 +(byte) f45::return#4 +(byte) f45::x +(byte) f45::x#0 +(byte) f45::x#1 +(byte()) f46((byte) f46::x) +(byte~) f46::$0 +(byte/signed word/word/dword/signed dword~) f46::$1 +(label) f46::@2 +(label) f46::@return +(byte) f46::return +(byte) f46::return#0 +(byte) f46::return#1 +(byte) f46::return#2 +(byte) f46::return#3 +(byte) f46::return#4 +(byte) f46::x +(byte) f46::x#0 +(byte) f46::x#1 +(byte()) f47((byte) f47::x) +(byte~) f47::$0 +(byte/signed word/word/dword/signed dword~) f47::$1 +(label) f47::@2 +(label) f47::@return +(byte) f47::return +(byte) f47::return#0 +(byte) f47::return#1 +(byte) f47::return#2 +(byte) f47::return#3 +(byte) f47::return#4 +(byte) f47::x +(byte) f47::x#0 +(byte) f47::x#1 +(byte()) f48((byte) f48::x) +(byte~) f48::$0 +(byte/signed word/word/dword/signed dword~) f48::$1 +(label) f48::@2 +(label) f48::@return +(byte) f48::return +(byte) f48::return#0 +(byte) f48::return#1 +(byte) f48::return#2 +(byte) f48::return#3 +(byte) f48::return#4 +(byte) f48::x +(byte) f48::x#0 +(byte) f48::x#1 +(byte()) f49((byte) f49::x) +(byte~) f49::$0 +(byte/signed word/word/dword/signed dword~) f49::$1 +(label) f49::@2 +(label) f49::@return +(byte) f49::return +(byte) f49::return#0 +(byte) f49::return#1 +(byte) f49::return#2 +(byte) f49::return#3 +(byte) f49::return#4 +(byte) f49::x +(byte) f49::x#0 +(byte) f49::x#1 +(byte()) f5((byte) f5::x) +(byte~) f5::$0 +(byte/signed word/word/dword/signed dword~) f5::$1 +(label) f5::@2 +(label) f5::@return +(byte) f5::return +(byte) f5::return#0 +(byte) f5::return#1 +(byte) f5::return#2 +(byte) f5::return#3 +(byte) f5::return#4 +(byte) f5::x +(byte) f5::x#0 +(byte) f5::x#1 +(byte()) f50((byte) f50::x) +(byte~) f50::$0 +(byte/signed word/word/dword/signed dword~) f50::$1 +(label) f50::@2 +(label) f50::@return +(byte) f50::return +(byte) f50::return#0 +(byte) f50::return#1 +(byte) f50::return#2 +(byte) f50::return#3 +(byte) f50::return#4 +(byte) f50::x +(byte) f50::x#0 +(byte) f50::x#1 +(byte()) f51((byte) f51::x) +(byte~) f51::$0 +(byte/signed word/word/dword/signed dword~) f51::$1 +(label) f51::@2 +(label) f51::@return +(byte) f51::return +(byte) f51::return#0 +(byte) f51::return#1 +(byte) f51::return#2 +(byte) f51::return#3 +(byte) f51::return#4 +(byte) f51::x +(byte) f51::x#0 +(byte) f51::x#1 +(byte()) f52((byte) f52::x) +(byte~) f52::$0 +(byte/signed word/word/dword/signed dword~) f52::$1 +(label) f52::@2 +(label) f52::@return +(byte) f52::return +(byte) f52::return#0 +(byte) f52::return#1 +(byte) f52::return#2 +(byte) f52::return#3 +(byte) f52::return#4 +(byte) f52::x +(byte) f52::x#0 +(byte) f52::x#1 +(byte()) f53((byte) f53::x) +(byte~) f53::$0 +(byte/signed word/word/dword/signed dword~) f53::$1 +(label) f53::@2 +(label) f53::@return +(byte) f53::return +(byte) f53::return#0 +(byte) f53::return#1 +(byte) f53::return#2 +(byte) f53::return#3 +(byte) f53::return#4 +(byte) f53::x +(byte) f53::x#0 +(byte) f53::x#1 +(byte()) f54((byte) f54::x) +(byte~) f54::$0 +(byte/signed word/word/dword/signed dword~) f54::$1 +(label) f54::@2 +(label) f54::@return +(byte) f54::return +(byte) f54::return#0 +(byte) f54::return#1 +(byte) f54::return#2 +(byte) f54::return#3 +(byte) f54::return#4 +(byte) f54::x +(byte) f54::x#0 +(byte) f54::x#1 +(byte()) f55((byte) f55::x) +(byte~) f55::$0 +(byte/signed word/word/dword/signed dword~) f55::$1 +(label) f55::@2 +(label) f55::@return +(byte) f55::return +(byte) f55::return#0 +(byte) f55::return#1 +(byte) f55::return#2 +(byte) f55::return#3 +(byte) f55::return#4 +(byte) f55::x +(byte) f55::x#0 +(byte) f55::x#1 +(byte()) f56((byte) f56::x) +(byte~) f56::$0 +(byte/signed word/word/dword/signed dword~) f56::$1 +(label) f56::@2 +(label) f56::@return +(byte) f56::return +(byte) f56::return#0 +(byte) f56::return#1 +(byte) f56::return#2 +(byte) f56::return#3 +(byte) f56::return#4 +(byte) f56::x +(byte) f56::x#0 +(byte) f56::x#1 +(byte()) f57((byte) f57::x) +(byte~) f57::$0 +(byte/signed word/word/dword/signed dword~) f57::$1 +(label) f57::@2 +(label) f57::@return +(byte) f57::return +(byte) f57::return#0 +(byte) f57::return#1 +(byte) f57::return#2 +(byte) f57::return#3 +(byte) f57::return#4 +(byte) f57::x +(byte) f57::x#0 +(byte) f57::x#1 +(byte()) f58((byte) f58::x) +(byte~) f58::$0 +(byte/signed word/word/dword/signed dword~) f58::$1 +(label) f58::@2 +(label) f58::@return +(byte) f58::return +(byte) f58::return#0 +(byte) f58::return#1 +(byte) f58::return#2 +(byte) f58::return#3 +(byte) f58::return#4 +(byte) f58::x +(byte) f58::x#0 +(byte) f58::x#1 +(byte()) f59((byte) f59::x) +(byte~) f59::$0 +(byte/signed word/word/dword/signed dword~) f59::$1 +(label) f59::@2 +(label) f59::@return +(byte) f59::return +(byte) f59::return#0 +(byte) f59::return#1 +(byte) f59::return#2 +(byte) f59::return#3 +(byte) f59::return#4 +(byte) f59::x +(byte) f59::x#0 +(byte) f59::x#1 +(byte()) f6((byte) f6::x) +(byte~) f6::$0 +(byte/signed word/word/dword/signed dword~) f6::$1 +(label) f6::@2 +(label) f6::@return +(byte) f6::return +(byte) f6::return#0 +(byte) f6::return#1 +(byte) f6::return#2 +(byte) f6::return#3 +(byte) f6::return#4 +(byte) f6::x +(byte) f6::x#0 +(byte) f6::x#1 +(byte()) f60((byte) f60::x) +(byte~) f60::$0 +(byte/signed word/word/dword/signed dword~) f60::$1 +(label) f60::@2 +(label) f60::@return +(byte) f60::return +(byte) f60::return#0 +(byte) f60::return#1 +(byte) f60::return#2 +(byte) f60::return#3 +(byte) f60::return#4 +(byte) f60::x +(byte) f60::x#0 +(byte) f60::x#1 +(byte()) f61((byte) f61::x) +(byte~) f61::$0 +(byte/signed word/word/dword/signed dword~) f61::$1 +(label) f61::@2 +(label) f61::@return +(byte) f61::return +(byte) f61::return#0 +(byte) f61::return#1 +(byte) f61::return#2 +(byte) f61::return#3 +(byte) f61::return#4 +(byte) f61::x +(byte) f61::x#0 +(byte) f61::x#1 +(byte()) f62((byte) f62::x) +(byte~) f62::$0 +(byte/signed word/word/dword/signed dword~) f62::$1 +(label) f62::@2 +(label) f62::@return +(byte) f62::return +(byte) f62::return#0 +(byte) f62::return#1 +(byte) f62::return#2 +(byte) f62::return#3 +(byte) f62::return#4 +(byte) f62::x +(byte) f62::x#0 +(byte) f62::x#1 +(byte()) f63((byte) f63::x) +(byte~) f63::$0 +(byte/signed word/word/dword/signed dword~) f63::$1 +(label) f63::@2 +(label) f63::@return +(byte) f63::return +(byte) f63::return#0 +(byte) f63::return#1 +(byte) f63::return#2 +(byte) f63::return#3 +(byte) f63::return#4 +(byte) f63::x +(byte) f63::x#0 +(byte) f63::x#1 +(byte()) f64((byte) f64::x) +(byte~) f64::$0 +(byte/signed word/word/dword/signed dword~) f64::$1 +(label) f64::@2 +(label) f64::@return +(byte) f64::return +(byte) f64::return#0 +(byte) f64::return#1 +(byte) f64::return#2 +(byte) f64::return#3 +(byte) f64::return#4 +(byte) f64::x +(byte) f64::x#0 +(byte) f64::x#1 +(byte()) f65((byte) f65::x) +(byte~) f65::$0 +(byte/signed word/word/dword/signed dword~) f65::$1 +(label) f65::@2 +(label) f65::@return +(byte) f65::return +(byte) f65::return#0 +(byte) f65::return#1 +(byte) f65::return#2 +(byte) f65::return#3 +(byte) f65::return#4 +(byte) f65::x +(byte) f65::x#0 +(byte) f65::x#1 +(byte()) f66((byte) f66::x) +(byte~) f66::$0 +(byte/signed word/word/dword/signed dword~) f66::$1 +(label) f66::@2 +(label) f66::@return +(byte) f66::return +(byte) f66::return#0 +(byte) f66::return#1 +(byte) f66::return#2 +(byte) f66::return#3 +(byte) f66::return#4 +(byte) f66::x +(byte) f66::x#0 +(byte) f66::x#1 +(byte()) f67((byte) f67::x) +(byte~) f67::$0 +(byte/signed word/word/dword/signed dword~) f67::$1 +(label) f67::@2 +(label) f67::@return +(byte) f67::return +(byte) f67::return#0 +(byte) f67::return#1 +(byte) f67::return#2 +(byte) f67::return#3 +(byte) f67::return#4 +(byte) f67::x +(byte) f67::x#0 +(byte) f67::x#1 +(byte()) f68((byte) f68::x) +(byte~) f68::$0 +(byte/signed word/word/dword/signed dword~) f68::$1 +(label) f68::@2 +(label) f68::@return +(byte) f68::return +(byte) f68::return#0 +(byte) f68::return#1 +(byte) f68::return#2 +(byte) f68::return#3 +(byte) f68::return#4 +(byte) f68::x +(byte) f68::x#0 +(byte) f68::x#1 +(byte()) f69((byte) f69::x) +(byte~) f69::$0 +(byte/signed word/word/dword/signed dword~) f69::$1 +(label) f69::@2 +(label) f69::@return +(byte) f69::return +(byte) f69::return#0 +(byte) f69::return#1 +(byte) f69::return#2 +(byte) f69::return#3 +(byte) f69::return#4 +(byte) f69::x +(byte) f69::x#0 +(byte) f69::x#1 +(byte()) f7((byte) f7::x) +(byte~) f7::$0 +(byte/signed word/word/dword/signed dword~) f7::$1 +(label) f7::@2 +(label) f7::@return +(byte) f7::return +(byte) f7::return#0 +(byte) f7::return#1 +(byte) f7::return#2 +(byte) f7::return#3 +(byte) f7::return#4 +(byte) f7::x +(byte) f7::x#0 +(byte) f7::x#1 +(byte()) f70((byte) f70::x) +(byte~) f70::$0 +(byte/signed word/word/dword/signed dword~) f70::$1 +(label) f70::@2 +(label) f70::@return +(byte) f70::return +(byte) f70::return#0 +(byte) f70::return#1 +(byte) f70::return#2 +(byte) f70::return#3 +(byte) f70::return#4 +(byte) f70::x +(byte) f70::x#0 +(byte) f70::x#1 +(byte()) f71((byte) f71::x) +(byte~) f71::$0 +(byte/signed word/word/dword/signed dword~) f71::$1 +(label) f71::@2 +(label) f71::@return +(byte) f71::return +(byte) f71::return#0 +(byte) f71::return#1 +(byte) f71::return#2 +(byte) f71::return#3 +(byte) f71::return#4 +(byte) f71::x +(byte) f71::x#0 +(byte) f71::x#1 +(byte()) f72((byte) f72::x) +(byte~) f72::$0 +(byte/signed word/word/dword/signed dword~) f72::$1 +(label) f72::@2 +(label) f72::@return +(byte) f72::return +(byte) f72::return#0 +(byte) f72::return#1 +(byte) f72::return#2 +(byte) f72::return#3 +(byte) f72::return#4 +(byte) f72::x +(byte) f72::x#0 +(byte) f72::x#1 +(byte()) f73((byte) f73::x) +(byte~) f73::$0 +(byte/signed word/word/dword/signed dword~) f73::$1 +(label) f73::@2 +(label) f73::@return +(byte) f73::return +(byte) f73::return#0 +(byte) f73::return#1 +(byte) f73::return#2 +(byte) f73::return#3 +(byte) f73::return#4 +(byte) f73::x +(byte) f73::x#0 +(byte) f73::x#1 +(byte()) f74((byte) f74::x) +(byte~) f74::$0 +(byte/signed word/word/dword/signed dword~) f74::$1 +(label) f74::@2 +(label) f74::@return +(byte) f74::return +(byte) f74::return#0 +(byte) f74::return#1 +(byte) f74::return#2 +(byte) f74::return#3 +(byte) f74::return#4 +(byte) f74::x +(byte) f74::x#0 +(byte) f74::x#1 +(byte()) f75((byte) f75::x) +(byte~) f75::$0 +(byte/signed word/word/dword/signed dword~) f75::$1 +(label) f75::@2 +(label) f75::@return +(byte) f75::return +(byte) f75::return#0 +(byte) f75::return#1 +(byte) f75::return#2 +(byte) f75::return#3 +(byte) f75::return#4 +(byte) f75::x +(byte) f75::x#0 +(byte) f75::x#1 +(byte()) f76((byte) f76::x) +(byte~) f76::$0 +(byte/signed word/word/dword/signed dword~) f76::$1 +(label) f76::@2 +(label) f76::@return +(byte) f76::return +(byte) f76::return#0 +(byte) f76::return#1 +(byte) f76::return#2 +(byte) f76::return#3 +(byte) f76::return#4 +(byte) f76::x +(byte) f76::x#0 +(byte) f76::x#1 +(byte()) f77((byte) f77::x) +(byte~) f77::$0 +(byte/signed word/word/dword/signed dword~) f77::$1 +(label) f77::@2 +(label) f77::@return +(byte) f77::return +(byte) f77::return#0 +(byte) f77::return#1 +(byte) f77::return#2 +(byte) f77::return#3 +(byte) f77::return#4 +(byte) f77::x +(byte) f77::x#0 +(byte) f77::x#1 +(byte()) f78((byte) f78::x) +(byte~) f78::$0 +(byte/signed word/word/dword/signed dword~) f78::$1 +(label) f78::@2 +(label) f78::@return +(byte) f78::return +(byte) f78::return#0 +(byte) f78::return#1 +(byte) f78::return#2 +(byte) f78::return#3 +(byte) f78::return#4 +(byte) f78::x +(byte) f78::x#0 +(byte) f78::x#1 +(byte()) f79((byte) f79::x) +(byte~) f79::$0 +(byte/signed word/word/dword/signed dword~) f79::$1 +(label) f79::@2 +(label) f79::@return +(byte) f79::return +(byte) f79::return#0 +(byte) f79::return#1 +(byte) f79::return#2 +(byte) f79::return#3 +(byte) f79::return#4 +(byte) f79::x +(byte) f79::x#0 +(byte) f79::x#1 +(byte()) f8((byte) f8::x) +(byte~) f8::$0 +(byte/signed word/word/dword/signed dword~) f8::$1 +(label) f8::@2 +(label) f8::@return +(byte) f8::return +(byte) f8::return#0 +(byte) f8::return#1 +(byte) f8::return#2 +(byte) f8::return#3 +(byte) f8::return#4 +(byte) f8::x +(byte) f8::x#0 +(byte) f8::x#1 +(byte()) f80((byte) f80::x) +(byte~) f80::$0 +(byte/signed word/word/dword/signed dword~) f80::$1 +(label) f80::@2 +(label) f80::@return +(byte) f80::return +(byte) f80::return#0 +(byte) f80::return#1 +(byte) f80::return#2 +(byte) f80::return#3 +(byte) f80::return#4 +(byte) f80::x +(byte) f80::x#0 +(byte) f80::x#1 +(byte()) f81((byte) f81::x) +(byte~) f81::$0 +(byte/signed word/word/dword/signed dword~) f81::$1 +(label) f81::@2 +(label) f81::@return +(byte) f81::return +(byte) f81::return#0 +(byte) f81::return#1 +(byte) f81::return#2 +(byte) f81::return#3 +(byte) f81::return#4 +(byte) f81::x +(byte) f81::x#0 +(byte) f81::x#1 +(byte()) f82((byte) f82::x) +(byte~) f82::$0 +(byte/signed word/word/dword/signed dword~) f82::$1 +(label) f82::@2 +(label) f82::@return +(byte) f82::return +(byte) f82::return#0 +(byte) f82::return#1 +(byte) f82::return#2 +(byte) f82::return#3 +(byte) f82::return#4 +(byte) f82::x +(byte) f82::x#0 +(byte) f82::x#1 +(byte()) f83((byte) f83::x) +(byte~) f83::$0 +(byte/signed word/word/dword/signed dword~) f83::$1 +(label) f83::@2 +(label) f83::@return +(byte) f83::return +(byte) f83::return#0 +(byte) f83::return#1 +(byte) f83::return#2 +(byte) f83::return#3 +(byte) f83::return#4 +(byte) f83::x +(byte) f83::x#0 +(byte) f83::x#1 +(byte()) f84((byte) f84::x) +(byte~) f84::$0 +(byte/signed word/word/dword/signed dword~) f84::$1 +(label) f84::@2 +(label) f84::@return +(byte) f84::return +(byte) f84::return#0 +(byte) f84::return#1 +(byte) f84::return#2 +(byte) f84::return#3 +(byte) f84::return#4 +(byte) f84::x +(byte) f84::x#0 +(byte) f84::x#1 +(byte()) f85((byte) f85::x) +(byte~) f85::$0 +(byte/signed word/word/dword/signed dword~) f85::$1 +(label) f85::@2 +(label) f85::@return +(byte) f85::return +(byte) f85::return#0 +(byte) f85::return#1 +(byte) f85::return#2 +(byte) f85::return#3 +(byte) f85::return#4 +(byte) f85::x +(byte) f85::x#0 +(byte) f85::x#1 +(byte()) f86((byte) f86::x) +(byte~) f86::$0 +(byte/signed word/word/dword/signed dword~) f86::$1 +(label) f86::@2 +(label) f86::@return +(byte) f86::return +(byte) f86::return#0 +(byte) f86::return#1 +(byte) f86::return#2 +(byte) f86::return#3 +(byte) f86::return#4 +(byte) f86::x +(byte) f86::x#0 +(byte) f86::x#1 +(byte()) f87((byte) f87::x) +(byte~) f87::$0 +(byte/signed word/word/dword/signed dword~) f87::$1 +(label) f87::@2 +(label) f87::@return +(byte) f87::return +(byte) f87::return#0 +(byte) f87::return#1 +(byte) f87::return#2 +(byte) f87::return#3 +(byte) f87::return#4 +(byte) f87::x +(byte) f87::x#0 +(byte) f87::x#1 +(byte()) f88((byte) f88::x) +(byte~) f88::$0 +(byte/signed word/word/dword/signed dword~) f88::$1 +(label) f88::@2 +(label) f88::@return +(byte) f88::return +(byte) f88::return#0 +(byte) f88::return#1 +(byte) f88::return#2 +(byte) f88::return#3 +(byte) f88::return#4 +(byte) f88::x +(byte) f88::x#0 +(byte) f88::x#1 +(byte()) f89((byte) f89::x) +(byte~) f89::$0 +(byte/signed word/word/dword/signed dword~) f89::$1 +(label) f89::@2 +(label) f89::@return +(byte) f89::return +(byte) f89::return#0 +(byte) f89::return#1 +(byte) f89::return#2 +(byte) f89::return#3 +(byte) f89::return#4 +(byte) f89::x +(byte) f89::x#0 +(byte) f89::x#1 +(byte()) f9((byte) f9::x) +(byte~) f9::$0 +(byte/signed word/word/dword/signed dword~) f9::$1 +(label) f9::@2 +(label) f9::@return +(byte) f9::return +(byte) f9::return#0 +(byte) f9::return#1 +(byte) f9::return#2 +(byte) f9::return#3 +(byte) f9::return#4 +(byte) f9::x +(byte) f9::x#0 +(byte) f9::x#1 +(byte()) f90((byte) f90::x) +(byte~) f90::$0 +(byte/signed word/word/dword/signed dword~) f90::$1 +(label) f90::@2 +(label) f90::@return +(byte) f90::return +(byte) f90::return#0 +(byte) f90::return#1 +(byte) f90::return#2 +(byte) f90::return#3 +(byte) f90::return#4 +(byte) f90::x +(byte) f90::x#0 +(byte) f90::x#1 +(byte()) f91((byte) f91::x) +(byte~) f91::$0 +(byte/signed word/word/dword/signed dword~) f91::$1 +(label) f91::@2 +(label) f91::@return +(byte) f91::return +(byte) f91::return#0 +(byte) f91::return#1 +(byte) f91::return#2 +(byte) f91::return#3 +(byte) f91::return#4 +(byte) f91::x +(byte) f91::x#0 +(byte) f91::x#1 +(byte()) f92((byte) f92::x) +(byte~) f92::$0 +(byte/signed word/word/dword/signed dword~) f92::$1 +(label) f92::@2 +(label) f92::@return +(byte) f92::return +(byte) f92::return#0 +(byte) f92::return#1 +(byte) f92::return#2 +(byte) f92::return#3 +(byte) f92::return#4 +(byte) f92::x +(byte) f92::x#0 +(byte) f92::x#1 +(byte()) f93((byte) f93::x) +(byte~) f93::$0 +(byte/signed word/word/dword/signed dword~) f93::$1 +(label) f93::@2 +(label) f93::@return +(byte) f93::return +(byte) f93::return#0 +(byte) f93::return#1 +(byte) f93::return#2 +(byte) f93::return#3 +(byte) f93::return#4 +(byte) f93::x +(byte) f93::x#0 +(byte) f93::x#1 +(byte()) f94((byte) f94::x) +(byte~) f94::$0 +(byte/signed word/word/dword/signed dword~) f94::$1 +(label) f94::@2 +(label) f94::@return +(byte) f94::return +(byte) f94::return#0 +(byte) f94::return#1 +(byte) f94::return#2 +(byte) f94::return#3 +(byte) f94::return#4 +(byte) f94::x +(byte) f94::x#0 +(byte) f94::x#1 +(byte()) f95((byte) f95::x) +(byte~) f95::$0 +(byte/signed word/word/dword/signed dword~) f95::$1 +(label) f95::@2 +(label) f95::@return +(byte) f95::return +(byte) f95::return#0 +(byte) f95::return#1 +(byte) f95::return#2 +(byte) f95::return#3 +(byte) f95::return#4 +(byte) f95::x +(byte) f95::x#0 +(byte) f95::x#1 +(byte()) f96((byte) f96::x) +(byte~) f96::$0 +(byte/signed word/word/dword/signed dword~) f96::$1 +(label) f96::@2 +(label) f96::@return +(byte) f96::return +(byte) f96::return#0 +(byte) f96::return#1 +(byte) f96::return#2 +(byte) f96::return#3 +(byte) f96::return#4 +(byte) f96::x +(byte) f96::x#0 +(byte) f96::x#1 +(byte()) f97((byte) f97::x) +(byte~) f97::$0 +(byte/signed word/word/dword/signed dword~) f97::$1 +(label) f97::@2 +(label) f97::@return +(byte) f97::return +(byte) f97::return#0 +(byte) f97::return#1 +(byte) f97::return#2 +(byte) f97::return#3 +(byte) f97::return#4 +(byte) f97::x +(byte) f97::x#0 +(byte) f97::x#1 +(byte()) f98((byte) f98::x) +(byte~) f98::$0 +(byte/signed word/word/dword/signed dword~) f98::$1 +(label) f98::@2 +(label) f98::@return +(byte) f98::return +(byte) f98::return#0 +(byte) f98::return#1 +(byte) f98::return#2 +(byte) f98::return#3 +(byte) f98::return#4 +(byte) f98::x +(byte) f98::x#0 +(byte) f98::x#1 +(byte()) f99((byte) f99::x) +(byte~) f99::$0 +(byte/signed word/word/dword/signed dword~) f99::$1 +(label) f99::@2 +(label) f99::@return +(byte) f99::return +(byte) f99::return#0 +(byte) f99::return#1 +(byte) f99::return#2 +(byte) f99::return#3 +(byte) f99::return#4 +(byte) f99::x +(byte) f99::x#0 +(byte) f99::x#1 +(void()) main() +(byte~) main::$0 +(label) main::@1 +(label) main::@return +(byte) main::reverse +(byte) main::reverse#0 +(byte*) main::screen +(byte*) main::screen#0 + +Culled Empty Block (label) @102 +Successful SSA optimization Pass2CullEmptyBlocks +Alias (byte) f1::return#0 = (byte) f1::return#3 +Alias (byte) f2::return#0 = (byte) f2::return#3 +Alias (byte) f1::return#1 = (byte/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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/signed word/word/dword/signed dword~) 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 +Successful SSA optimization Pass2AliasElimination +Redundant Phi (byte) f1::x#1 (byte) f1::x#0 +Redundant Phi (byte) f2::x#1 (byte) f2::x#0 +Redundant Phi (byte) f3::x#1 (byte) f3::x#0 +Redundant Phi (byte) f4::x#1 (byte) f4::x#0 +Redundant Phi (byte) f5::x#1 (byte) f5::x#0 +Redundant Phi (byte) f6::x#1 (byte) f6::x#0 +Redundant Phi (byte) f7::x#1 (byte) f7::x#0 +Redundant Phi (byte) f8::x#1 (byte) f8::x#0 +Redundant Phi (byte) f9::x#1 (byte) f9::x#0 +Redundant Phi (byte) f10::x#1 (byte) f10::x#0 +Redundant Phi (byte) f11::x#1 (byte) f11::x#0 +Redundant Phi (byte) f12::x#1 (byte) f12::x#0 +Redundant Phi (byte) f13::x#1 (byte) f13::x#0 +Redundant Phi (byte) f14::x#1 (byte) f14::x#0 +Redundant Phi (byte) f15::x#1 (byte) f15::x#0 +Redundant Phi (byte) f16::x#1 (byte) f16::x#0 +Redundant Phi (byte) f17::x#1 (byte) f17::x#0 +Redundant Phi (byte) f18::x#1 (byte) f18::x#0 +Redundant Phi (byte) f19::x#1 (byte) f19::x#0 +Redundant Phi (byte) f20::x#1 (byte) f20::x#0 +Redundant Phi (byte) f21::x#1 (byte) f21::x#0 +Redundant Phi (byte) f22::x#1 (byte) f22::x#0 +Redundant Phi (byte) f23::x#1 (byte) f23::x#0 +Redundant Phi (byte) f24::x#1 (byte) f24::x#0 +Redundant Phi (byte) f25::x#1 (byte) f25::x#0 +Redundant Phi (byte) f26::x#1 (byte) f26::x#0 +Redundant Phi (byte) f27::x#1 (byte) f27::x#0 +Redundant Phi (byte) f28::x#1 (byte) f28::x#0 +Redundant Phi (byte) f29::x#1 (byte) f29::x#0 +Redundant Phi (byte) f30::x#1 (byte) f30::x#0 +Redundant Phi (byte) f31::x#1 (byte) f31::x#0 +Redundant Phi (byte) f32::x#1 (byte) f32::x#0 +Redundant Phi (byte) f33::x#1 (byte) f33::x#0 +Redundant Phi (byte) f34::x#1 (byte) f34::x#0 +Redundant Phi (byte) f35::x#1 (byte) f35::x#0 +Redundant Phi (byte) f36::x#1 (byte) f36::x#0 +Redundant Phi (byte) f37::x#1 (byte) f37::x#0 +Redundant Phi (byte) f38::x#1 (byte) f38::x#0 +Redundant Phi (byte) f39::x#1 (byte) f39::x#0 +Redundant Phi (byte) f40::x#1 (byte) f40::x#0 +Redundant Phi (byte) f41::x#1 (byte) f41::x#0 +Redundant Phi (byte) f42::x#1 (byte) f42::x#0 +Redundant Phi (byte) f43::x#1 (byte) f43::x#0 +Redundant Phi (byte) f44::x#1 (byte) f44::x#0 +Redundant Phi (byte) f45::x#1 (byte) f45::x#0 +Redundant Phi (byte) f46::x#1 (byte) f46::x#0 +Redundant Phi (byte) f47::x#1 (byte) f47::x#0 +Redundant Phi (byte) f48::x#1 (byte) f48::x#0 +Redundant Phi (byte) f49::x#1 (byte) f49::x#0 +Redundant Phi (byte) f50::x#1 (byte) f50::x#0 +Redundant Phi (byte) f51::x#1 (byte) f51::x#0 +Redundant Phi (byte) f52::x#1 (byte) f52::x#0 +Redundant Phi (byte) f53::x#1 (byte) f53::x#0 +Redundant Phi (byte) f54::x#1 (byte) f54::x#0 +Redundant Phi (byte) f55::x#1 (byte) f55::x#0 +Redundant Phi (byte) f56::x#1 (byte) f56::x#0 +Redundant Phi (byte) f57::x#1 (byte) f57::x#0 +Redundant Phi (byte) f58::x#1 (byte) f58::x#0 +Redundant Phi (byte) f59::x#1 (byte) f59::x#0 +Redundant Phi (byte) f60::x#1 (byte) f60::x#0 +Redundant Phi (byte) f61::x#1 (byte) f61::x#0 +Redundant Phi (byte) f62::x#1 (byte) f62::x#0 +Redundant Phi (byte) f63::x#1 (byte) f63::x#0 +Redundant Phi (byte) f64::x#1 (byte) f64::x#0 +Redundant Phi (byte) f65::x#1 (byte) f65::x#0 +Redundant Phi (byte) f66::x#1 (byte) f66::x#0 +Redundant Phi (byte) f67::x#1 (byte) f67::x#0 +Redundant Phi (byte) f68::x#1 (byte) f68::x#0 +Redundant Phi (byte) f69::x#1 (byte) f69::x#0 +Redundant Phi (byte) f70::x#1 (byte) f70::x#0 +Redundant Phi (byte) f71::x#1 (byte) f71::x#0 +Redundant Phi (byte) f72::x#1 (byte) f72::x#0 +Redundant Phi (byte) f73::x#1 (byte) f73::x#0 +Redundant Phi (byte) f74::x#1 (byte) f74::x#0 +Redundant Phi (byte) f75::x#1 (byte) f75::x#0 +Redundant Phi (byte) f76::x#1 (byte) f76::x#0 +Redundant Phi (byte) f77::x#1 (byte) f77::x#0 +Redundant Phi (byte) f78::x#1 (byte) f78::x#0 +Redundant Phi (byte) f79::x#1 (byte) f79::x#0 +Redundant Phi (byte) f80::x#1 (byte) f80::x#0 +Redundant Phi (byte) f81::x#1 (byte) f81::x#0 +Redundant Phi (byte) f82::x#1 (byte) f82::x#0 +Redundant Phi (byte) f83::x#1 (byte) f83::x#0 +Redundant Phi (byte) f84::x#1 (byte) f84::x#0 +Redundant Phi (byte) f85::x#1 (byte) f85::x#0 +Redundant Phi (byte) f86::x#1 (byte) f86::x#0 +Redundant Phi (byte) f87::x#1 (byte) f87::x#0 +Redundant Phi (byte) f88::x#1 (byte) f88::x#0 +Redundant Phi (byte) f89::x#1 (byte) f89::x#0 +Redundant Phi (byte) f90::x#1 (byte) f90::x#0 +Redundant Phi (byte) f91::x#1 (byte) f91::x#0 +Redundant Phi (byte) f92::x#1 (byte) f92::x#0 +Redundant Phi (byte) f93::x#1 (byte) f93::x#0 +Redundant Phi (byte) f94::x#1 (byte) f94::x#0 +Redundant Phi (byte) f95::x#1 (byte) f95::x#0 +Redundant Phi (byte) f96::x#1 (byte) f96::x#0 +Redundant Phi (byte) f97::x#1 (byte) f97::x#0 +Redundant Phi (byte) f98::x#1 (byte) f98::x#0 +Redundant Phi (byte) f99::x#1 (byte) f99::x#0 +Redundant Phi (byte) f100::return#1 (byte) f100::x#0 +Successful SSA optimization Pass2RedundantPhiElimination +Constant (const byte*) main::screen#0 = ((byte*))$400 +Constant (const byte) main::reverse#0 = $80 +Constant (const byte) f1::x#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f2::x#0 = f1::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f3::x#0 = f2::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f4::x#0 = f3::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f5::x#0 = f4::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f6::x#0 = f5::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f7::x#0 = f6::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f8::x#0 = f7::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f9::x#0 = f8::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f10::x#0 = f9::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f11::x#0 = f10::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f12::x#0 = f11::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f13::x#0 = f12::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f14::x#0 = f13::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f15::x#0 = f14::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f16::x#0 = f15::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f17::x#0 = f16::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f18::x#0 = f17::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f19::x#0 = f18::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f20::x#0 = f19::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f21::x#0 = f20::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f22::x#0 = f21::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f23::x#0 = f22::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f24::x#0 = f23::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f25::x#0 = f24::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f26::x#0 = f25::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f27::x#0 = f26::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f28::x#0 = f27::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f29::x#0 = f28::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f30::x#0 = f29::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f31::x#0 = f30::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f32::x#0 = f31::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f33::x#0 = f32::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f34::x#0 = f33::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f35::x#0 = f34::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f36::x#0 = f35::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f37::x#0 = f36::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f38::x#0 = f37::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f39::x#0 = f38::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f40::x#0 = f39::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f41::x#0 = f40::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f42::x#0 = f41::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f43::x#0 = f42::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f44::x#0 = f43::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f45::x#0 = f44::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f46::x#0 = f45::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f47::x#0 = f46::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f48::x#0 = f47::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f49::x#0 = f48::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f50::x#0 = f49::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f51::x#0 = f50::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f52::x#0 = f51::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f53::x#0 = f52::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f54::x#0 = f53::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f55::x#0 = f54::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f56::x#0 = f55::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f57::x#0 = f56::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f58::x#0 = f57::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f59::x#0 = f58::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f60::x#0 = f59::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f61::x#0 = f60::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f62::x#0 = f61::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f63::x#0 = f62::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f64::x#0 = f63::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f65::x#0 = f64::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f66::x#0 = f65::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f67::x#0 = f66::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f68::x#0 = f67::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f69::x#0 = f68::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f70::x#0 = f69::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f71::x#0 = f70::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f72::x#0 = f71::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f73::x#0 = f72::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f74::x#0 = f73::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f75::x#0 = f74::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f76::x#0 = f75::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f77::x#0 = f76::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f78::x#0 = f77::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f79::x#0 = f78::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f80::x#0 = f79::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f81::x#0 = f80::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f82::x#0 = f81::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f83::x#0 = f82::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f84::x#0 = f83::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f85::x#0 = f84::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f86::x#0 = f85::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f87::x#0 = f86::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f88::x#0 = f87::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f89::x#0 = f88::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f90::x#0 = f89::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f91::x#0 = f90::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f92::x#0 = f91::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f93::x#0 = f92::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f94::x#0 = f93::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f95::x#0 = f94::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f96::x#0 = f95::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f97::x#0 = f96::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f98::x#0 = f97::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f99::x#0 = f98::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f100::x#0 = f99::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f100::return#0 = f100::x#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f99::$0 = f100::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f99::return#1 = f99::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f99::return#0 = f99::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f98::$0 = f99::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f98::return#1 = f98::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f98::return#0 = f98::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f97::$0 = f98::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f97::return#1 = f97::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f97::return#0 = f97::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f96::$0 = f97::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f96::return#1 = f96::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f96::return#0 = f96::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f95::$0 = f96::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f95::return#1 = f95::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f95::return#0 = f95::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f94::$0 = f95::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f94::return#1 = f94::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f94::return#0 = f94::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f93::$0 = f94::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f93::return#1 = f93::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f93::return#0 = f93::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f92::$0 = f93::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f92::return#1 = f92::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f92::return#0 = f92::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f91::$0 = f92::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f91::return#1 = f91::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f91::return#0 = f91::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f90::$0 = f91::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f90::return#1 = f90::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f90::return#0 = f90::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f89::$0 = f90::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f89::return#1 = f89::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f89::return#0 = f89::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f88::$0 = f89::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f88::return#1 = f88::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f88::return#0 = f88::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f87::$0 = f88::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f87::return#1 = f87::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f87::return#0 = f87::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f86::$0 = f87::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f86::return#1 = f86::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f86::return#0 = f86::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f85::$0 = f86::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f85::return#1 = f85::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f85::return#0 = f85::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f84::$0 = f85::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f84::return#1 = f84::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f84::return#0 = f84::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f83::$0 = f84::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f83::return#1 = f83::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f83::return#0 = f83::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f82::$0 = f83::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f82::return#1 = f82::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f82::return#0 = f82::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f81::$0 = f82::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f81::return#1 = f81::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f81::return#0 = f81::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f80::$0 = f81::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f80::return#1 = f80::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f80::return#0 = f80::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f79::$0 = f80::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f79::return#1 = f79::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f79::return#0 = f79::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f78::$0 = f79::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f78::return#1 = f78::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f78::return#0 = f78::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f77::$0 = f78::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f77::return#1 = f77::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f77::return#0 = f77::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f76::$0 = f77::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f76::return#1 = f76::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f76::return#0 = f76::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f75::$0 = f76::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f75::return#1 = f75::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f75::return#0 = f75::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f74::$0 = f75::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f74::return#1 = f74::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f74::return#0 = f74::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f73::$0 = f74::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f73::return#1 = f73::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f73::return#0 = f73::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f72::$0 = f73::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f72::return#1 = f72::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f72::return#0 = f72::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f71::$0 = f72::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f71::return#1 = f71::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f71::return#0 = f71::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f70::$0 = f71::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f70::return#1 = f70::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f70::return#0 = f70::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f69::$0 = f70::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f69::return#1 = f69::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f69::return#0 = f69::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f68::$0 = f69::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f68::return#1 = f68::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f68::return#0 = f68::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f67::$0 = f68::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f67::return#1 = f67::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f67::return#0 = f67::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f66::$0 = f67::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f66::return#1 = f66::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f66::return#0 = f66::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f65::$0 = f66::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f65::return#1 = f65::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f65::return#0 = f65::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f64::$0 = f65::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f64::return#1 = f64::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f64::return#0 = f64::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f63::$0 = f64::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f63::return#1 = f63::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f63::return#0 = f63::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f62::$0 = f63::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f62::return#1 = f62::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f62::return#0 = f62::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f61::$0 = f62::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f61::return#1 = f61::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f61::return#0 = f61::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f60::$0 = f61::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f60::return#1 = f60::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f60::return#0 = f60::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f59::$0 = f60::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f59::return#1 = f59::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f59::return#0 = f59::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f58::$0 = f59::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f58::return#1 = f58::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f58::return#0 = f58::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f57::$0 = f58::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f57::return#1 = f57::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f57::return#0 = f57::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f56::$0 = f57::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f56::return#1 = f56::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f56::return#0 = f56::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f55::$0 = f56::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f55::return#1 = f55::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f55::return#0 = f55::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f54::$0 = f55::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f54::return#1 = f54::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f54::return#0 = f54::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f53::$0 = f54::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f53::return#1 = f53::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f53::return#0 = f53::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f52::$0 = f53::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f52::return#1 = f52::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f52::return#0 = f52::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f51::$0 = f52::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f51::return#1 = f51::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f51::return#0 = f51::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f50::$0 = f51::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f50::return#1 = f50::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f50::return#0 = f50::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f49::$0 = f50::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f49::return#1 = f49::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f49::return#0 = f49::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f48::$0 = f49::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f48::return#1 = f48::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f48::return#0 = f48::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f47::$0 = f48::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f47::return#1 = f47::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f47::return#0 = f47::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f46::$0 = f47::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f46::return#1 = f46::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f46::return#0 = f46::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f45::$0 = f46::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f45::return#1 = f45::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f45::return#0 = f45::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f44::$0 = f45::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f44::return#1 = f44::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f44::return#0 = f44::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f43::$0 = f44::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f43::return#1 = f43::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f43::return#0 = f43::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f42::$0 = f43::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f42::return#1 = f42::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f42::return#0 = f42::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f41::$0 = f42::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f41::return#1 = f41::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f41::return#0 = f41::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f40::$0 = f41::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f40::return#1 = f40::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f40::return#0 = f40::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f39::$0 = f40::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f39::return#1 = f39::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f39::return#0 = f39::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f38::$0 = f39::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f38::return#1 = f38::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f38::return#0 = f38::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f37::$0 = f38::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f37::return#1 = f37::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f37::return#0 = f37::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f36::$0 = f37::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f36::return#1 = f36::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f36::return#0 = f36::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f35::$0 = f36::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f35::return#1 = f35::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f35::return#0 = f35::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f34::$0 = f35::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f34::return#1 = f34::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f34::return#0 = f34::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f33::$0 = f34::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f33::return#1 = f33::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f33::return#0 = f33::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f32::$0 = f33::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f32::return#1 = f32::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f32::return#0 = f32::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f31::$0 = f32::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f31::return#1 = f31::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f31::return#0 = f31::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f30::$0 = f31::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f30::return#1 = f30::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f30::return#0 = f30::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f29::$0 = f30::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f29::return#1 = f29::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f29::return#0 = f29::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f28::$0 = f29::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f28::return#1 = f28::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f28::return#0 = f28::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f27::$0 = f28::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f27::return#1 = f27::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f27::return#0 = f27::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f26::$0 = f27::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f26::return#1 = f26::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f26::return#0 = f26::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f25::$0 = f26::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f25::return#1 = f25::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f25::return#0 = f25::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f24::$0 = f25::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f24::return#1 = f24::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f24::return#0 = f24::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f23::$0 = f24::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f23::return#1 = f23::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f23::return#0 = f23::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f22::$0 = f23::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f22::return#1 = f22::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f22::return#0 = f22::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f21::$0 = f22::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f21::return#1 = f21::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f21::return#0 = f21::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f20::$0 = f21::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f20::return#1 = f20::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f20::return#0 = f20::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f19::$0 = f20::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f19::return#1 = f19::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f19::return#0 = f19::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f18::$0 = f19::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f18::return#1 = f18::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f18::return#0 = f18::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f17::$0 = f18::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f17::return#1 = f17::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f17::return#0 = f17::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f16::$0 = f17::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f16::return#1 = f16::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f16::return#0 = f16::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f15::$0 = f16::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f15::return#1 = f15::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f15::return#0 = f15::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f14::$0 = f15::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f14::return#1 = f14::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f14::return#0 = f14::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f13::$0 = f14::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f13::return#1 = f13::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f13::return#0 = f13::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f12::$0 = f13::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f12::return#1 = f12::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f12::return#0 = f12::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f11::$0 = f12::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f11::return#1 = f11::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f11::return#0 = f11::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f10::$0 = f11::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f10::return#1 = f10::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f10::return#0 = f10::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f9::$0 = f10::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f9::return#1 = f9::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f9::return#0 = f9::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f8::$0 = f9::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f8::return#1 = f8::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f8::return#0 = f8::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f7::$0 = f8::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f7::return#1 = f7::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f7::return#0 = f7::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f6::$0 = f7::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f6::return#1 = f6::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f6::return#0 = f6::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f5::$0 = f6::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f5::return#1 = f5::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f5::return#0 = f5::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f4::$0 = f5::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f4::return#1 = f4::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f4::return#0 = f4::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f3::$0 = f4::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f3::return#1 = f3::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f3::return#0 = f3::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f2::$0 = f3::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f2::return#1 = f2::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f2::return#0 = f2::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f1::$0 = f2::return#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f1::return#1 = f1::$0+1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) f1::return#0 = f1::return#1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) main::$0 = f1::return#0 +Successful SSA optimization Pass2ConstantIdentification +Consolidated array index constant in *(main::screen#0+0) +Successful SSA optimization Pass2ConstantAdditionElimination +Successful SSA optimization PassNEliminateUnusedVars +Culled Empty Block (label) f1::@2 +Culled Empty Block (label) f2::@2 +Culled Empty Block (label) f3::@2 +Culled Empty Block (label) f4::@2 +Culled Empty Block (label) f5::@2 +Culled Empty Block (label) f6::@2 +Culled Empty Block (label) f7::@2 +Culled Empty Block (label) f8::@2 +Culled Empty Block (label) f9::@2 +Culled Empty Block (label) f10::@2 +Culled Empty Block (label) f11::@2 +Culled Empty Block (label) f12::@2 +Culled Empty Block (label) f13::@2 +Culled Empty Block (label) f14::@2 +Culled Empty Block (label) f15::@2 +Culled Empty Block (label) f16::@2 +Culled Empty Block (label) f17::@2 +Culled Empty Block (label) f18::@2 +Culled Empty Block (label) f19::@2 +Culled Empty Block (label) f20::@2 +Culled Empty Block (label) f21::@2 +Culled Empty Block (label) f22::@2 +Culled Empty Block (label) f23::@2 +Culled Empty Block (label) f24::@2 +Culled Empty Block (label) f25::@2 +Culled Empty Block (label) f26::@2 +Culled Empty Block (label) f27::@2 +Culled Empty Block (label) f28::@2 +Culled Empty Block (label) f29::@2 +Culled Empty Block (label) f30::@2 +Culled Empty Block (label) f31::@2 +Culled Empty Block (label) f32::@2 +Culled Empty Block (label) f33::@2 +Culled Empty Block (label) f34::@2 +Culled Empty Block (label) f35::@2 +Culled Empty Block (label) f36::@2 +Culled Empty Block (label) f37::@2 +Culled Empty Block (label) f38::@2 +Culled Empty Block (label) f39::@2 +Culled Empty Block (label) f40::@2 +Culled Empty Block (label) f41::@2 +Culled Empty Block (label) f42::@2 +Culled Empty Block (label) f43::@2 +Culled Empty Block (label) f44::@2 +Culled Empty Block (label) f45::@2 +Culled Empty Block (label) f46::@2 +Culled Empty Block (label) f47::@2 +Culled Empty Block (label) f48::@2 +Culled Empty Block (label) f49::@2 +Culled Empty Block (label) f50::@2 +Culled Empty Block (label) f51::@2 +Culled Empty Block (label) f52::@2 +Culled Empty Block (label) f53::@2 +Culled Empty Block (label) f54::@2 +Culled Empty Block (label) f55::@2 +Culled Empty Block (label) f56::@2 +Culled Empty Block (label) f57::@2 +Culled Empty Block (label) f58::@2 +Culled Empty Block (label) f59::@2 +Culled Empty Block (label) f60::@2 +Culled Empty Block (label) f61::@2 +Culled Empty Block (label) f62::@2 +Culled Empty Block (label) f63::@2 +Culled Empty Block (label) f64::@2 +Culled Empty Block (label) f65::@2 +Culled Empty Block (label) f66::@2 +Culled Empty Block (label) f67::@2 +Culled Empty Block (label) f68::@2 +Culled Empty Block (label) f69::@2 +Culled Empty Block (label) f70::@2 +Culled Empty Block (label) f71::@2 +Culled Empty Block (label) f72::@2 +Culled Empty Block (label) f73::@2 +Culled Empty Block (label) f74::@2 +Culled Empty Block (label) f75::@2 +Culled Empty Block (label) f76::@2 +Culled Empty Block (label) f77::@2 +Culled Empty Block (label) f78::@2 +Culled Empty Block (label) f79::@2 +Culled Empty Block (label) f80::@2 +Culled Empty Block (label) f81::@2 +Culled Empty Block (label) f82::@2 +Culled Empty Block (label) f83::@2 +Culled Empty Block (label) f84::@2 +Culled Empty Block (label) f85::@2 +Culled Empty Block (label) f86::@2 +Culled Empty Block (label) f87::@2 +Culled Empty Block (label) f88::@2 +Culled Empty Block (label) f89::@2 +Culled Empty Block (label) f90::@2 +Culled Empty Block (label) f91::@2 +Culled Empty Block (label) f92::@2 +Culled Empty Block (label) f93::@2 +Culled Empty Block (label) f94::@2 +Culled Empty Block (label) f95::@2 +Culled Empty Block (label) f96::@2 +Culled Empty Block (label) f97::@2 +Culled Empty Block (label) f98::@2 +Culled Empty Block (label) f99::@2 +Successful SSA optimization Pass2CullEmptyBlocks +Inlining constant with different constant siblings (const byte) f1::return#0 +Inlining constant with different constant siblings (const byte) f2::return#0 +Inlining constant with different constant siblings (const byte) f3::return#0 +Inlining constant with different constant siblings (const byte) f4::return#0 +Inlining constant with different constant siblings (const byte) f5::return#0 +Inlining constant with different constant siblings (const byte) f6::return#0 +Inlining constant with different constant siblings (const byte) f7::return#0 +Inlining constant with different constant siblings (const byte) f8::return#0 +Inlining constant with different constant siblings (const byte) f9::return#0 +Inlining constant with different constant siblings (const byte) f10::return#0 +Inlining constant with different constant siblings (const byte) f11::return#0 +Inlining constant with different constant siblings (const byte) f12::return#0 +Inlining constant with different constant siblings (const byte) f13::return#0 +Inlining constant with different constant siblings (const byte) f14::return#0 +Inlining constant with different constant siblings (const byte) f15::return#0 +Inlining constant with different constant siblings (const byte) f16::return#0 +Inlining constant with different constant siblings (const byte) f17::return#0 +Inlining constant with different constant siblings (const byte) f18::return#0 +Inlining constant with different constant siblings (const byte) f19::return#0 +Inlining constant with different constant siblings (const byte) f20::return#0 +Inlining constant with different constant siblings (const byte) f21::return#0 +Inlining constant with different constant siblings (const byte) f22::return#0 +Inlining constant with different constant siblings (const byte) f23::return#0 +Inlining constant with different constant siblings (const byte) f24::return#0 +Inlining constant with different constant siblings (const byte) f25::return#0 +Inlining constant with different constant siblings (const byte) f26::return#0 +Inlining constant with different constant siblings (const byte) f27::return#0 +Inlining constant with different constant siblings (const byte) f28::return#0 +Inlining constant with different constant siblings (const byte) f29::return#0 +Inlining constant with different constant siblings (const byte) f30::return#0 +Inlining constant with different constant siblings (const byte) f31::return#0 +Inlining constant with different constant siblings (const byte) f32::return#0 +Inlining constant with different constant siblings (const byte) f33::return#0 +Inlining constant with different constant siblings (const byte) f34::return#0 +Inlining constant with different constant siblings (const byte) f35::return#0 +Inlining constant with different constant siblings (const byte) f36::return#0 +Inlining constant with different constant siblings (const byte) f37::return#0 +Inlining constant with different constant siblings (const byte) f38::return#0 +Inlining constant with different constant siblings (const byte) f39::return#0 +Inlining constant with different constant siblings (const byte) f40::return#0 +Inlining constant with different constant siblings (const byte) f41::return#0 +Inlining constant with different constant siblings (const byte) f42::return#0 +Inlining constant with different constant siblings (const byte) f43::return#0 +Inlining constant with different constant siblings (const byte) f44::return#0 +Inlining constant with different constant siblings (const byte) f45::return#0 +Inlining constant with different constant siblings (const byte) f46::return#0 +Inlining constant with different constant siblings (const byte) f47::return#0 +Inlining constant with different constant siblings (const byte) f48::return#0 +Inlining constant with different constant siblings (const byte) f49::return#0 +Inlining constant with different constant siblings (const byte) f50::return#0 +Inlining constant with different constant siblings (const byte) f51::return#0 +Inlining constant with different constant siblings (const byte) f52::return#0 +Inlining constant with different constant siblings (const byte) f53::return#0 +Inlining constant with different constant siblings (const byte) f54::return#0 +Inlining constant with different constant siblings (const byte) f55::return#0 +Inlining constant with different constant siblings (const byte) f56::return#0 +Inlining constant with different constant siblings (const byte) f57::return#0 +Inlining constant with different constant siblings (const byte) f58::return#0 +Inlining constant with different constant siblings (const byte) f59::return#0 +Inlining constant with different constant siblings (const byte) f60::return#0 +Inlining constant with different constant siblings (const byte) f61::return#0 +Inlining constant with different constant siblings (const byte) f62::return#0 +Inlining constant with different constant siblings (const byte) f63::return#0 +Inlining constant with different constant siblings (const byte) f64::return#0 +Inlining constant with different constant siblings (const byte) f65::return#0 +Inlining constant with different constant siblings (const byte) f66::return#0 +Inlining constant with different constant siblings (const byte) f67::return#0 +Inlining constant with different constant siblings (const byte) f68::return#0 +Inlining constant with different constant siblings (const byte) f69::return#0 +Inlining constant with different constant siblings (const byte) f70::return#0 +Inlining constant with different constant siblings (const byte) f71::return#0 +Inlining constant with different constant siblings (const byte) f72::return#0 +Inlining constant with different constant siblings (const byte) f73::return#0 +Inlining constant with different constant siblings (const byte) f74::return#0 +Inlining constant with different constant siblings (const byte) f75::return#0 +Inlining constant with different constant siblings (const byte) f76::return#0 +Inlining constant with different constant siblings (const byte) f77::return#0 +Inlining constant with different constant siblings (const byte) f78::return#0 +Inlining constant with different constant siblings (const byte) f79::return#0 +Inlining constant with different constant siblings (const byte) f80::return#0 +Inlining constant with different constant siblings (const byte) f81::return#0 +Inlining constant with different constant siblings (const byte) f82::return#0 +Inlining constant with different constant siblings (const byte) f83::return#0 +Inlining constant with different constant siblings (const byte) f84::return#0 +Inlining constant with different constant siblings (const byte) f85::return#0 +Inlining constant with different constant siblings (const byte) f86::return#0 +Inlining constant with different constant siblings (const byte) f87::return#0 +Inlining constant with different constant siblings (const byte) f88::return#0 +Inlining constant with different constant siblings (const byte) f89::return#0 +Inlining constant with different constant siblings (const byte) f90::return#0 +Inlining constant with different constant siblings (const byte) f91::return#0 +Inlining constant with different constant siblings (const byte) f92::return#0 +Inlining constant with different constant siblings (const byte) f93::return#0 +Inlining constant with different constant siblings (const byte) f94::return#0 +Inlining constant with different constant siblings (const byte) f95::return#0 +Inlining constant with different constant siblings (const byte) f96::return#0 +Inlining constant with different constant siblings (const byte) f97::return#0 +Inlining constant with different constant siblings (const byte) f98::return#0 +Inlining constant with different constant siblings (const byte) f99::return#0 +Constant inlined f98::return#0 = (const byte) f98::return#1 +Constant inlined f49::$0 = (const byte) f50::return#1 +Constant inlined f53::return#0 = (const byte) f53::return#1 +Constant inlined f97::x#0 = (const byte) f1::x#0 +Constant inlined f52::x#0 = (const byte) f1::x#0 +Constant inlined f14::$0 = (const byte) f15::return#1 +Constant inlined f66::x#0 = (const byte) f1::x#0 +Constant inlined f1::$0 = (const byte) f2::return#1 +Constant inlined f30::$0 = (const byte) f31::return#1 +Constant inlined f83::x#0 = (const byte) f1::x#0 +Constant inlined f73::$0 = (const byte) f74::return#1 +Constant inlined f35::x#0 = (const byte) f1::x#0 +Constant inlined f38::return#0 = (const byte) f38::return#1 +Constant inlined f4::x#0 = (const byte) f1::x#0 +Constant inlined f65::$0 = (const byte) f66::return#1 +Constant inlined f49::x#0 = (const byte) f1::x#0 +Constant inlined f57::$0 = (const byte) f58::return#1 +Constant inlined f60::return#0 = (const byte) f60::return#1 +Constant inlined f22::$0 = (const byte) f23::return#1 +Constant inlined f18::x#0 = (const byte) f1::x#0 +Constant inlined f50::$0 = (const byte) f51::return#1 +Constant inlined f93::$0 = (const byte) f94::return#1 +Constant inlined f46::return#0 = (const byte) f46::return#1 +Constant inlined f37::x#0 = (const byte) f1::x#0 +Constant inlined f34::$0 = (const byte) f35::return#1 +Constant inlined f77::$0 = (const byte) f78::return#1 +Constant inlined f54::x#0 = (const byte) f1::x#0 +Constant inlined f40::x#0 = (const byte) f1::x#0 +Constant inlined f81::$0 = (const byte) f82::return#1 +Constant inlined f37::return#0 = (const byte) f37::return#1 +Constant inlined f29::$0 = (const byte) f30::return#1 +Constant inlined f78::x#0 = (const byte) f1::x#0 +Constant inlined f21::x#0 = (const byte) f1::x#0 +Constant inlined f6::x#0 = (const byte) f1::x#0 +Constant inlined f9::return#0 = (const byte) f9::return#1 +Constant inlined f61::$0 = (const byte) f62::return#1 +Constant inlined f47::return#0 = (const byte) f47::return#1 +Constant inlined f51::return#0 = (const byte) f51::return#1 +Constant inlined f53::$0 = (const byte) f54::return#1 +Constant inlined f16::x#0 = (const byte) f1::x#0 +Constant inlined f8::return#0 = (const byte) f8::return#1 +Constant inlined f36::return#0 = (const byte) f36::return#1 +Constant inlined f10::$0 = (const byte) f11::return#1 +Constant inlined f10::return#0 = (const byte) f10::return#1 +Constant inlined f44::return#0 = (const byte) f44::return#1 +Constant inlined f95::x#0 = (const byte) f1::x#0 +Constant inlined f96::$0 = (const byte) f97::return#1 +Constant inlined f4::$0 = (const byte) f5::return#1 +Constant inlined f50::x#0 = (const byte) f1::x#0 +Constant inlined f97::return#0 = (const byte) f97::return#1 +Constant inlined f70::$0 = (const byte) f71::return#1 +Constant inlined f8::$0 = (const byte) f9::return#1 +Constant inlined f71::return#0 = (const byte) f71::return#1 +Constant inlined f25::$0 = (const byte) f26::return#1 +Constant inlined f29::return#0 = (const byte) f29::return#1 +Constant inlined f31::x#0 = (const byte) f1::x#0 +Constant inlined f42::$0 = (const byte) f43::return#1 +Constant inlined f38::$0 = (const byte) f39::return#1 +Constant inlined f68::$0 = (const byte) f69::return#1 +Constant inlined f54::return#0 = (const byte) f54::return#1 +Constant inlined f25::x#0 = (const byte) f1::x#0 +Constant inlined f85::x#0 = (const byte) f1::x#0 +Constant inlined f61::return#0 = (const byte) f61::return#1 +Constant inlined f28::x#0 = (const byte) f1::x#0 +Constant inlined f39::return#0 = (const byte) f39::return#1 +Constant inlined main::$0 = (const byte) f1::return#1 +Constant inlined f64::return#0 = (const byte) f64::return#1 +Constant inlined f85::$0 = (const byte) f86::return#1 +Constant inlined f47::x#0 = (const byte) f1::x#0 +Constant inlined f31::$0 = (const byte) f32::return#1 +Constant inlined f74::$0 = (const byte) f75::return#1 +Constant inlined f23::$0 = (const byte) f24::return#1 +Constant inlined f79::return#0 = (const byte) f79::return#1 +Constant inlined f66::$0 = (const byte) f67::return#1 +Constant inlined f30::x#0 = (const byte) f1::x#0 +Constant inlined f87::return#0 = (const byte) f87::return#1 +Constant inlined f27::x#0 = (const byte) f1::x#0 +Constant inlined f75::x#0 = (const byte) f1::x#0 +Constant inlined f94::return#0 = (const byte) f94::return#1 +Constant inlined f56::$0 = (const byte) f57::return#1 +Constant inlined f57::return#0 = (const byte) f57::return#1 +Constant inlined f13::$0 = (const byte) f14::return#1 +Constant inlined f12::x#0 = (const byte) f1::x#0 +Constant inlined f26::x#0 = (const byte) f1::x#0 +Constant inlined f12::return#0 = (const byte) f12::return#1 +Constant inlined f65::return#0 = (const byte) f65::return#1 +Constant inlined f92::x#0 = (const byte) f1::x#0 +Constant inlined f80::$0 = (const byte) f81::return#1 +Constant inlined f73::x#0 = (const byte) f1::x#0 +Constant inlined f20::return#0 = (const byte) f20::return#1 +Constant inlined f17::$0 = (const byte) f18::return#1 +Constant inlined f33::return#0 = (const byte) f33::return#1 +Constant inlined f45::x#0 = (const byte) f1::x#0 +Constant inlined f56::x#0 = (const byte) f1::x#0 +Constant inlined f11::return#0 = (const byte) f11::return#1 +Constant inlined f2::$0 = (const byte) f3::return#1 +Constant inlined f51::$0 = (const byte) f52::return#1 +Constant inlined f89::x#0 = (const byte) f1::x#0 +Constant inlined f89::$0 = (const byte) f90::return#1 +Constant inlined f94::$0 = (const byte) f95::return#1 +Constant inlined f40::return#0 = (const byte) f40::return#1 +Constant inlined f72::return#0 = (const byte) f72::return#1 +Constant inlined f18::return#0 = (const byte) f18::return#1 +Constant inlined f46::$0 = (const byte) f47::return#1 +Constant inlined f9::x#0 = (const byte) f1::x#0 +Constant inlined f66::return#0 = (const byte) f66::return#1 +Constant inlined f2::x#0 = (const byte) f1::x#0 +Constant inlined f28::$0 = (const byte) f29::return#1 +Constant inlined f52::$0 = (const byte) f53::return#1 +Constant inlined f88::$0 = (const byte) f89::return#1 +Constant inlined f95::$0 = (const byte) f96::return#1 +Constant inlined f8::x#0 = (const byte) f1::x#0 +Constant inlined f45::$0 = (const byte) f46::return#1 +Constant inlined f18::$0 = (const byte) f19::return#1 +Constant inlined f64::x#0 = (const byte) f1::x#0 +Constant inlined f46::x#0 = (const byte) f1::x#0 +Constant inlined f62::$0 = (const byte) f63::return#1 +Constant inlined f99::x#0 = (const byte) f1::x#0 +Constant inlined f78::$0 = (const byte) f79::return#1 +Constant inlined f73::return#0 = (const byte) f73::return#1 +Constant inlined f17::return#0 = (const byte) f17::return#1 +Constant inlined f78::return#0 = (const byte) f78::return#1 +Constant inlined f35::$0 = (const byte) f36::return#1 +Constant inlined f25::return#0 = (const byte) f25::return#1 +Constant inlined f52::return#0 = (const byte) f52::return#1 +Constant inlined f20::x#0 = (const byte) f1::x#0 +Constant inlined f99::return#0 = (const byte) f99::return#1 +Constant inlined f86::return#0 = (const byte) f86::return#1 +Constant inlined f17::x#0 = (const byte) f1::x#0 +Constant inlined f41::$0 = (const byte) f42::return#1 +Constant inlined f93::x#0 = (const byte) f1::x#0 +Constant inlined f11::x#0 = (const byte) f1::x#0 +Constant inlined f99::$0 = (const byte) f1::x#0 +Constant inlined f7::$0 = (const byte) f8::return#1 +Constant inlined f84::$0 = (const byte) f85::return#1 +Constant inlined f67::$0 = (const byte) f68::return#1 +Constant inlined f24::$0 = (const byte) f25::return#1 +Constant inlined f80::return#0 = (const byte) f80::return#1 +Constant inlined f36::x#0 = (const byte) f1::x#0 +Constant inlined f90::$0 = (const byte) f91::return#1 +Constant inlined f93::return#0 = (const byte) f93::return#1 +Constant inlined f32::return#0 = (const byte) f32::return#1 +Constant inlined f74::x#0 = (const byte) f1::x#0 +Constant inlined f58::return#0 = (const byte) f58::return#1 +Constant inlined f4::return#0 = (const byte) f4::return#1 +Constant inlined f45::return#0 = (const byte) f45::return#1 +Constant inlined f55::x#0 = (const byte) f1::x#0 +Constant inlined f15::return#0 = (const byte) f15::return#1 +Constant inlined f3::return#0 = (const byte) f3::return#1 +Constant inlined f100::x#0 = (const byte) f1::x#0 +Constant inlined f83::return#0 = (const byte) f83::return#1 +Constant inlined f91::$0 = (const byte) f92::return#1 +Constant inlined f68::return#0 = (const byte) f68::return#1 +Constant inlined f23::return#0 = (const byte) f23::return#1 +Constant inlined f75::$0 = (const byte) f76::return#1 +Constant inlined f19::x#0 = (const byte) f1::x#0 +Constant inlined f32::$0 = (const byte) f33::return#1 +Constant inlined f5::x#0 = (const byte) f1::x#0 +Constant inlined f31::return#0 = (const byte) f31::return#1 +Constant inlined f53::x#0 = (const byte) f1::x#0 +Constant inlined f76::return#0 = (const byte) f76::return#1 +Constant inlined f98::x#0 = (const byte) f1::x#0 +Constant inlined f39::$0 = (const byte) f40::return#1 +Constant inlined f40::$0 = (const byte) f41::return#1 +Constant inlined f83::$0 = (const byte) f84::return#1 +Constant inlined f79::x#0 = (const byte) f1::x#0 +Constant inlined f84::x#0 = (const byte) f1::x#0 +Constant inlined f3::$0 = (const byte) f4::return#1 +Constant inlined f34::x#0 = (const byte) f1::x#0 +Constant inlined f2::return#0 = (const byte) f2::return#1 +Constant inlined f70::x#0 = (const byte) f1::x#0 +Constant inlined f48::x#0 = (const byte) f1::x#0 +Constant inlined f63::$0 = (const byte) f64::return#1 +Constant inlined f14::return#0 = (const byte) f14::return#1 +Constant inlined f65::x#0 = (const byte) f1::x#0 +Constant inlined f59::return#0 = (const byte) f59::return#1 +Constant inlined f3::x#0 = (const byte) f1::x#0 +Constant inlined f82::return#0 = (const byte) f82::return#1 +Constant inlined f47::$0 = (const byte) f48::return#1 +Constant inlined f51::x#0 = (const byte) f1::x#0 +Constant inlined f67::x#0 = (const byte) f1::x#0 +Constant inlined f75::return#0 = (const byte) f75::return#1 +Constant inlined f30::return#0 = (const byte) f30::return#1 +Constant inlined f24::return#0 = (const byte) f24::return#1 +Constant inlined f69::return#0 = (const byte) f69::return#1 +Constant inlined f16::$0 = (const byte) f17::return#1 +Constant inlined f91::return#0 = (const byte) f91::return#1 +Constant inlined f59::$0 = (const byte) f60::return#1 +Constant inlined f20::$0 = (const byte) f21::return#1 +Constant inlined f10::x#0 = (const byte) f1::x#0 +Constant inlined f79::$0 = (const byte) f80::return#1 +Constant inlined f94::x#0 = (const byte) f1::x#0 +Constant inlined f85::return#0 = (const byte) f85::return#1 +Constant inlined f36::$0 = (const byte) f37::return#1 +Constant inlined f41::x#0 = (const byte) f1::x#0 +Constant inlined f69::x#0 = (const byte) f1::x#0 +Constant inlined f27::$0 = (const byte) f28::return#1 +Constant inlined f21::return#0 = (const byte) f21::return#1 +Constant inlined f38::x#0 = (const byte) f1::x#0 +Constant inlined f72::x#0 = (const byte) f1::x#0 +Constant inlined f74::return#0 = (const byte) f74::return#1 +Constant inlined f19::$0 = (const byte) f20::return#1 +Constant inlined f81::return#0 = (const byte) f81::return#1 +Constant inlined f5::return#0 = (const byte) f5::return#1 +Constant inlined f7::x#0 = (const byte) f1::x#0 +Constant inlined f92::return#0 = (const byte) f92::return#1 +Constant inlined f87::$0 = (const byte) f88::return#1 +Constant inlined f15::x#0 = (const byte) f1::x#0 +Constant inlined f44::$0 = (const byte) f45::return#1 +Constant inlined f55::$0 = (const byte) f56::return#1 +Constant inlined f98::$0 = (const byte) f99::return#1 +Constant inlined f84::return#0 = (const byte) f84::return#1 +Constant inlined f16::return#0 = (const byte) f16::return#1 +Constant inlined f12::$0 = (const byte) f13::return#1 +Constant inlined f41::return#0 = (const byte) f41::return#1 +Constant inlined f67::return#0 = (const byte) f67::return#1 +Constant inlined f22::x#0 = (const byte) f1::x#0 +Constant inlined f82::x#0 = (const byte) f1::x#0 +Constant inlined f13::return#0 = (const byte) f13::return#1 +Constant inlined f77::return#0 = (const byte) f77::return#1 +Constant inlined f26::return#0 = (const byte) f26::return#1 +Constant inlined f44::x#0 = (const byte) f1::x#0 +Constant inlined f60::x#0 = (const byte) f1::x#0 +Constant inlined f72::$0 = (const byte) f73::return#1 +Constant inlined f6::$0 = (const byte) f7::return#1 +Constant inlined f63::x#0 = (const byte) f1::x#0 +Constant inlined f13::x#0 = (const byte) f1::x#0 +Constant inlined f34::return#0 = (const byte) f34::return#1 +Constant inlined f91::x#0 = (const byte) f1::x#0 +Constant inlined f58::x#0 = (const byte) f1::x#0 +Constant inlined f49::return#0 = (const byte) f49::return#1 +Constant inlined f15::$0 = (const byte) f16::return#1 +Constant inlined f58::$0 = (const byte) f59::return#1 +Constant inlined f82::$0 = (const byte) f83::return#1 +Constant inlined f42::return#0 = (const byte) f42::return#1 +Constant inlined f88::x#0 = (const byte) f1::x#0 +Constant inlined f92::$0 = (const byte) f93::return#1 +Constant inlined f48::$0 = (const byte) f49::return#1 +Constant inlined f19::return#0 = (const byte) f19::return#1 +Constant inlined f9::$0 = (const byte) f10::return#1 +Constant inlined f100::return#0 = (const byte) f1::x#0 +Constant inlined f57::x#0 = (const byte) f1::x#0 +Constant inlined f61::x#0 = (const byte) f1::x#0 +Constant inlined f76::x#0 = (const byte) f1::x#0 +Constant inlined f59::x#0 = (const byte) f1::x#0 +Constant inlined f64::$0 = (const byte) f65::return#1 +Constant inlined f27::return#0 = (const byte) f27::return#1 +Constant inlined f21::$0 = (const byte) f22::return#1 +Constant inlined f50::return#0 = (const byte) f50::return#1 +Constant inlined f62::x#0 = (const byte) f1::x#0 +Constant inlined f95::return#0 = (const byte) f95::return#1 +Constant inlined f43::x#0 = (const byte) f1::x#0 +Constant inlined f43::return#0 = (const byte) f43::return#1 +Constant inlined f6::return#0 = (const byte) f6::return#1 +Constant inlined f88::return#0 = (const byte) f88::return#1 +Constant inlined f32::x#0 = (const byte) f1::x#0 +Constant inlined f56::return#0 = (const byte) f56::return#1 +Constant inlined f76::$0 = (const byte) f77::return#1 +Constant inlined f33::$0 = (const byte) f34::return#1 +Constant inlined f24::x#0 = (const byte) f1::x#0 +Constant inlined f70::return#0 = (const byte) f70::return#1 +Constant inlined f77::x#0 = (const byte) f1::x#0 +Constant inlined f86::x#0 = (const byte) f1::x#0 +Constant inlined f60::$0 = (const byte) f61::return#1 +Constant inlined f80::x#0 = (const byte) f1::x#0 +Constant inlined f1::return#0 = (const byte) f1::return#1 +Constant inlined f55::return#0 = (const byte) f55::return#1 +Constant inlined f5::$0 = (const byte) f6::return#1 +Constant inlined f28::return#0 = (const byte) f28::return#1 +Constant inlined f62::return#0 = (const byte) f62::return#1 +Constant inlined f43::$0 = (const byte) f44::return#1 +Constant inlined f89::return#0 = (const byte) f89::return#1 +Constant inlined f26::$0 = (const byte) f27::return#1 +Constant inlined f63::return#0 = (const byte) f63::return#1 +Constant inlined f68::x#0 = (const byte) f1::x#0 +Constant inlined f29::x#0 = (const byte) f1::x#0 +Constant inlined f81::x#0 = (const byte) f1::x#0 +Constant inlined f23::x#0 = (const byte) f1::x#0 +Constant inlined f42::x#0 = (const byte) f1::x#0 +Constant inlined f87::x#0 = (const byte) f1::x#0 +Constant inlined f90::return#0 = (const byte) f90::return#1 +Constant inlined f22::return#0 = (const byte) f22::return#1 +Constant inlined f69::$0 = (const byte) f70::return#1 +Constant inlined f7::return#0 = (const byte) f7::return#1 +Constant inlined f96::x#0 = (const byte) f1::x#0 +Constant inlined f14::x#0 = (const byte) f1::x#0 +Constant inlined f48::return#0 = (const byte) f48::return#1 +Constant inlined f71::$0 = (const byte) f72::return#1 +Constant inlined f86::$0 = (const byte) f87::return#1 +Constant inlined f35::return#0 = (const byte) f35::return#1 +Constant inlined f97::$0 = (const byte) f98::return#1 +Constant inlined f37::$0 = (const byte) f38::return#1 +Constant inlined f11::$0 = (const byte) f12::return#1 +Constant inlined f54::$0 = (const byte) f55::return#1 +Constant inlined f33::x#0 = (const byte) f1::x#0 +Constant inlined f96::return#0 = (const byte) f96::return#1 +Constant inlined f90::x#0 = (const byte) f1::x#0 +Constant inlined f71::x#0 = (const byte) f1::x#0 +Constant inlined f39::x#0 = (const byte) f1::x#0 +Successful SSA optimization Pass2ConstantInlining +Simplifying constant plus zero main::screen#0+0 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @101 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of f1 +Adding NOP phi() at start of f2 +Adding NOP phi() at start of f3 +Adding NOP phi() at start of f4 +Adding NOP phi() at start of f5 +Adding NOP phi() at start of f6 +Adding NOP phi() at start of f7 +Adding NOP phi() at start of f8 +Adding NOP phi() at start of f9 +Adding NOP phi() at start of f10 +Adding NOP phi() at start of f11 +Adding NOP phi() at start of f12 +Adding NOP phi() at start of f13 +Adding NOP phi() at start of f14 +Adding NOP phi() at start of f15 +Adding NOP phi() at start of f16 +Adding NOP phi() at start of f17 +Adding NOP phi() at start of f18 +Adding NOP phi() at start of f19 +Adding NOP phi() at start of f20 +Adding NOP phi() at start of f21 +Adding NOP phi() at start of f22 +Adding NOP phi() at start of f23 +Adding NOP phi() at start of f24 +Adding NOP phi() at start of f25 +Adding NOP phi() at start of f26 +Adding NOP phi() at start of f27 +Adding NOP phi() at start of f28 +Adding NOP phi() at start of f29 +Adding NOP phi() at start of f30 +Adding NOP phi() at start of f31 +Adding NOP phi() at start of f32 +Adding NOP phi() at start of f33 +Adding NOP phi() at start of f34 +Adding NOP phi() at start of f35 +Adding NOP phi() at start of f36 +Adding NOP phi() at start of f37 +Adding NOP phi() at start of f38 +Adding NOP phi() at start of f39 +Adding NOP phi() at start of f40 +Adding NOP phi() at start of f41 +Adding NOP phi() at start of f42 +Adding NOP phi() at start of f43 +Adding NOP phi() at start of f44 +Adding NOP phi() at start of f45 +Adding NOP phi() at start of f46 +Adding NOP phi() at start of f47 +Adding NOP phi() at start of f48 +Adding NOP phi() at start of f49 +Adding NOP phi() at start of f50 +Adding NOP phi() at start of f51 +Adding NOP phi() at start of f52 +Adding NOP phi() at start of f53 +Adding NOP phi() at start of f54 +Adding NOP phi() at start of f55 +Adding NOP phi() at start of f56 +Adding NOP phi() at start of f57 +Adding NOP phi() at start of f58 +Adding NOP phi() at start of f59 +Adding NOP phi() at start of f60 +Adding NOP phi() at start of f61 +Adding NOP phi() at start of f62 +Adding NOP phi() at start of f63 +Adding NOP phi() at start of f64 +Adding NOP phi() at start of f65 +Adding NOP phi() at start of f66 +Adding NOP phi() at start of f67 +Adding NOP phi() at start of f68 +Adding NOP phi() at start of f69 +Adding NOP phi() at start of f70 +Adding NOP phi() at start of f71 +Adding NOP phi() at start of f72 +Adding NOP phi() at start of f73 +Adding NOP phi() at start of f74 +Adding NOP phi() at start of f75 +Adding NOP phi() at start of f76 +Adding NOP phi() at start of f77 +Adding NOP phi() at start of f78 +Adding NOP phi() at start of f79 +Adding NOP phi() at start of f80 +Adding NOP phi() at start of f81 +Adding NOP phi() at start of f82 +Adding NOP phi() at start of f83 +Adding NOP phi() at start of f84 +Adding NOP phi() at start of f85 +Adding NOP phi() at start of f86 +Adding NOP phi() at start of f87 +Adding NOP phi() at start of f88 +Adding NOP phi() at start of f89 +Adding NOP phi() at start of f90 +Adding NOP phi() at start of f91 +Adding NOP phi() at start of f92 +Adding NOP phi() at start of f93 +Adding NOP phi() at start of f94 +Adding NOP phi() at start of f95 +Adding NOP phi() at start of f96 +Adding NOP phi() at start of f97 +Adding NOP phi() at start of f98 +Adding NOP phi() at start of f99 +Adding NOP phi() at start of f100 +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to f1:5 +Calls in [f1] to f2:9 +Calls in [f2] to f3:12 +Calls in [f3] to f4:15 +Calls in [f4] to f5:18 +Calls in [f5] to f6:21 +Calls in [f6] to f7:24 +Calls in [f7] to f8:27 +Calls in [f8] to f9:30 +Calls in [f9] to f10:33 +Calls in [f10] to f11:36 +Calls in [f11] to f12:39 +Calls in [f12] to f13:42 +Calls in [f13] to f14:45 +Calls in [f14] to f15:48 +Calls in [f15] to f16:51 +Calls in [f16] to f17:54 +Calls in [f17] to f18:57 +Calls in [f18] to f19:60 +Calls in [f19] to f20:63 +Calls in [f20] to f21:66 +Calls in [f21] to f22:69 +Calls in [f22] to f23:72 +Calls in [f23] to f24:75 +Calls in [f24] to f25:78 +Calls in [f25] to f26:81 +Calls in [f26] to f27:84 +Calls in [f27] to f28:87 +Calls in [f28] to f29:90 +Calls in [f29] to f30:93 +Calls in [f30] to f31:96 +Calls in [f31] to f32:99 +Calls in [f32] to f33:102 +Calls in [f33] to f34:105 +Calls in [f34] to f35:108 +Calls in [f35] to f36:111 +Calls in [f36] to f37:114 +Calls in [f37] to f38:117 +Calls in [f38] to f39:120 +Calls in [f39] to f40:123 +Calls in [f40] to f41:126 +Calls in [f41] to f42:129 +Calls in [f42] to f43:132 +Calls in [f43] to f44:135 +Calls in [f44] to f45:138 +Calls in [f45] to f46:141 +Calls in [f46] to f47:144 +Calls in [f47] to f48:147 +Calls in [f48] to f49:150 +Calls in [f49] to f50:153 +Calls in [f50] to f51:156 +Calls in [f51] to f52:159 +Calls in [f52] to f53:162 +Calls in [f53] to f54:165 +Calls in [f54] to f55:168 +Calls in [f55] to f56:171 +Calls in [f56] to f57:174 +Calls in [f57] to f58:177 +Calls in [f58] to f59:180 +Calls in [f59] to f60:183 +Calls in [f60] to f61:186 +Calls in [f61] to f62:189 +Calls in [f62] to f63:192 +Calls in [f63] to f64:195 +Calls in [f64] to f65:198 +Calls in [f65] to f66:201 +Calls in [f66] to f67:204 +Calls in [f67] to f68:207 +Calls in [f68] to f69:210 +Calls in [f69] to f70:213 +Calls in [f70] to f71:216 +Calls in [f71] to f72:219 +Calls in [f72] to f73:222 +Calls in [f73] to f74:225 +Calls in [f74] to f75:228 +Calls in [f75] to f76:231 +Calls in [f76] to f77:234 +Calls in [f77] to f78:237 +Calls in [f78] to f79:240 +Calls in [f79] to f80:243 +Calls in [f80] to f81:246 +Calls in [f81] to f82:249 +Calls in [f82] to f83:252 +Calls in [f83] to f84:255 +Calls in [f84] to f85:258 +Calls in [f85] to f86:261 +Calls in [f86] to f87:264 +Calls in [f87] to f88:267 +Calls in [f88] to f89:270 +Calls in [f89] to f90:273 +Calls in [f90] to f91:276 +Calls in [f91] to f92:279 +Calls in [f92] to f93:282 +Calls in [f93] to f94:285 +Calls in [f94] to f95:288 +Calls in [f95] to f96:291 +Calls in [f96] to f97:294 +Calls in [f97] to f98:297 +Calls in [f98] to f99:300 +Calls in [f99] to f100:303 + +Created 0 initial phi equivalence classes +Coalesced down to 0 phi equivalence classes +Renumbering block @101 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 f1 +Adding NOP phi() at start of f2 +Adding NOP phi() at start of f3 +Adding NOP phi() at start of f4 +Adding NOP phi() at start of f5 +Adding NOP phi() at start of f6 +Adding NOP phi() at start of f7 +Adding NOP phi() at start of f8 +Adding NOP phi() at start of f9 +Adding NOP phi() at start of f10 +Adding NOP phi() at start of f11 +Adding NOP phi() at start of f12 +Adding NOP phi() at start of f13 +Adding NOP phi() at start of f14 +Adding NOP phi() at start of f15 +Adding NOP phi() at start of f16 +Adding NOP phi() at start of f17 +Adding NOP phi() at start of f18 +Adding NOP phi() at start of f19 +Adding NOP phi() at start of f20 +Adding NOP phi() at start of f21 +Adding NOP phi() at start of f22 +Adding NOP phi() at start of f23 +Adding NOP phi() at start of f24 +Adding NOP phi() at start of f25 +Adding NOP phi() at start of f26 +Adding NOP phi() at start of f27 +Adding NOP phi() at start of f28 +Adding NOP phi() at start of f29 +Adding NOP phi() at start of f30 +Adding NOP phi() at start of f31 +Adding NOP phi() at start of f32 +Adding NOP phi() at start of f33 +Adding NOP phi() at start of f34 +Adding NOP phi() at start of f35 +Adding NOP phi() at start of f36 +Adding NOP phi() at start of f37 +Adding NOP phi() at start of f38 +Adding NOP phi() at start of f39 +Adding NOP phi() at start of f40 +Adding NOP phi() at start of f41 +Adding NOP phi() at start of f42 +Adding NOP phi() at start of f43 +Adding NOP phi() at start of f44 +Adding NOP phi() at start of f45 +Adding NOP phi() at start of f46 +Adding NOP phi() at start of f47 +Adding NOP phi() at start of f48 +Adding NOP phi() at start of f49 +Adding NOP phi() at start of f50 +Adding NOP phi() at start of f51 +Adding NOP phi() at start of f52 +Adding NOP phi() at start of f53 +Adding NOP phi() at start of f54 +Adding NOP phi() at start of f55 +Adding NOP phi() at start of f56 +Adding NOP phi() at start of f57 +Adding NOP phi() at start of f58 +Adding NOP phi() at start of f59 +Adding NOP phi() at start of f60 +Adding NOP phi() at start of f61 +Adding NOP phi() at start of f62 +Adding NOP phi() at start of f63 +Adding NOP phi() at start of f64 +Adding NOP phi() at start of f65 +Adding NOP phi() at start of f66 +Adding NOP phi() at start of f67 +Adding NOP phi() at start of f68 +Adding NOP phi() at start of f69 +Adding NOP phi() at start of f70 +Adding NOP phi() at start of f71 +Adding NOP phi() at start of f72 +Adding NOP phi() at start of f73 +Adding NOP phi() at start of f74 +Adding NOP phi() at start of f75 +Adding NOP phi() at start of f76 +Adding NOP phi() at start of f77 +Adding NOP phi() at start of f78 +Adding NOP phi() at start of f79 +Adding NOP phi() at start of f80 +Adding NOP phi() at start of f81 +Adding NOP phi() at start of f82 +Adding NOP phi() at start of f83 +Adding NOP phi() at start of f84 +Adding NOP phi() at start of f85 +Adding NOP phi() at start of f86 +Adding NOP phi() at start of f87 +Adding NOP phi() at start of f88 +Adding NOP phi() at start of f89 +Adding NOP phi() at start of f90 +Adding NOP phi() at start of f91 +Adding NOP phi() at start of f92 +Adding NOP phi() at start of f93 +Adding NOP phi() at start of f94 +Adding NOP phi() at start of f95 +Adding NOP phi() at start of f96 +Adding NOP phi() at start of f97 +Adding NOP phi() at start of f98 +Adding NOP phi() at start of f99 +Adding NOP phi() at start of f100 + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] phi() + [5] call f1 + to:main::@1 +main::@1: scope:[main] from main + [6] *((const byte*) main::screen#0) ← (const byte) f1::return#1 + to:main::@return +main::@return: scope:[main] from main::@1 + [7] return + to:@return +f1: scope:[f1] from main + [8] phi() + [9] call f2 + to:f1::@return +f1::@return: scope:[f1] from f1 + [10] return + to:@return +f2: scope:[f2] from f1 + [11] phi() + [12] call f3 + to:f2::@return +f2::@return: scope:[f2] from f2 + [13] return + to:@return +f3: scope:[f3] from f2 + [14] phi() + [15] call f4 + to:f3::@return +f3::@return: scope:[f3] from f3 + [16] return + to:@return +f4: scope:[f4] from f3 + [17] phi() + [18] call f5 + to:f4::@return +f4::@return: scope:[f4] from f4 + [19] return + to:@return +f5: scope:[f5] from f4 + [20] phi() + [21] call f6 + to:f5::@return +f5::@return: scope:[f5] from f5 + [22] return + to:@return +f6: scope:[f6] from f5 + [23] phi() + [24] call f7 + to:f6::@return +f6::@return: scope:[f6] from f6 + [25] return + to:@return +f7: scope:[f7] from f6 + [26] phi() + [27] call f8 + to:f7::@return +f7::@return: scope:[f7] from f7 + [28] return + to:@return +f8: scope:[f8] from f7 + [29] phi() + [30] call f9 + to:f8::@return +f8::@return: scope:[f8] from f8 + [31] return + to:@return +f9: scope:[f9] from f8 + [32] phi() + [33] call f10 + to:f9::@return +f9::@return: scope:[f9] from f9 + [34] return + to:@return +f10: scope:[f10] from f9 + [35] phi() + [36] call f11 + to:f10::@return +f10::@return: scope:[f10] from f10 + [37] return + to:@return +f11: scope:[f11] from f10 + [38] phi() + [39] call f12 + to:f11::@return +f11::@return: scope:[f11] from f11 + [40] return + to:@return +f12: scope:[f12] from f11 + [41] phi() + [42] call f13 + to:f12::@return +f12::@return: scope:[f12] from f12 + [43] return + to:@return +f13: scope:[f13] from f12 + [44] phi() + [45] call f14 + to:f13::@return +f13::@return: scope:[f13] from f13 + [46] return + to:@return +f14: scope:[f14] from f13 + [47] phi() + [48] call f15 + to:f14::@return +f14::@return: scope:[f14] from f14 + [49] return + to:@return +f15: scope:[f15] from f14 + [50] phi() + [51] call f16 + to:f15::@return +f15::@return: scope:[f15] from f15 + [52] return + to:@return +f16: scope:[f16] from f15 + [53] phi() + [54] call f17 + to:f16::@return +f16::@return: scope:[f16] from f16 + [55] return + to:@return +f17: scope:[f17] from f16 + [56] phi() + [57] call f18 + to:f17::@return +f17::@return: scope:[f17] from f17 + [58] return + to:@return +f18: scope:[f18] from f17 + [59] phi() + [60] call f19 + to:f18::@return +f18::@return: scope:[f18] from f18 + [61] return + to:@return +f19: scope:[f19] from f18 + [62] phi() + [63] call f20 + to:f19::@return +f19::@return: scope:[f19] from f19 + [64] return + to:@return +f20: scope:[f20] from f19 + [65] phi() + [66] call f21 + to:f20::@return +f20::@return: scope:[f20] from f20 + [67] return + to:@return +f21: scope:[f21] from f20 + [68] phi() + [69] call f22 + to:f21::@return +f21::@return: scope:[f21] from f21 + [70] return + to:@return +f22: scope:[f22] from f21 + [71] phi() + [72] call f23 + to:f22::@return +f22::@return: scope:[f22] from f22 + [73] return + to:@return +f23: scope:[f23] from f22 + [74] phi() + [75] call f24 + to:f23::@return +f23::@return: scope:[f23] from f23 + [76] return + to:@return +f24: scope:[f24] from f23 + [77] phi() + [78] call f25 + to:f24::@return +f24::@return: scope:[f24] from f24 + [79] return + to:@return +f25: scope:[f25] from f24 + [80] phi() + [81] call f26 + to:f25::@return +f25::@return: scope:[f25] from f25 + [82] return + to:@return +f26: scope:[f26] from f25 + [83] phi() + [84] call f27 + to:f26::@return +f26::@return: scope:[f26] from f26 + [85] return + to:@return +f27: scope:[f27] from f26 + [86] phi() + [87] call f28 + to:f27::@return +f27::@return: scope:[f27] from f27 + [88] return + to:@return +f28: scope:[f28] from f27 + [89] phi() + [90] call f29 + to:f28::@return +f28::@return: scope:[f28] from f28 + [91] return + to:@return +f29: scope:[f29] from f28 + [92] phi() + [93] call f30 + to:f29::@return +f29::@return: scope:[f29] from f29 + [94] return + to:@return +f30: scope:[f30] from f29 + [95] phi() + [96] call f31 + to:f30::@return +f30::@return: scope:[f30] from f30 + [97] return + to:@return +f31: scope:[f31] from f30 + [98] phi() + [99] call f32 + to:f31::@return +f31::@return: scope:[f31] from f31 + [100] return + to:@return +f32: scope:[f32] from f31 + [101] phi() + [102] call f33 + to:f32::@return +f32::@return: scope:[f32] from f32 + [103] return + to:@return +f33: scope:[f33] from f32 + [104] phi() + [105] call f34 + to:f33::@return +f33::@return: scope:[f33] from f33 + [106] return + to:@return +f34: scope:[f34] from f33 + [107] phi() + [108] call f35 + to:f34::@return +f34::@return: scope:[f34] from f34 + [109] return + to:@return +f35: scope:[f35] from f34 + [110] phi() + [111] call f36 + to:f35::@return +f35::@return: scope:[f35] from f35 + [112] return + to:@return +f36: scope:[f36] from f35 + [113] phi() + [114] call f37 + to:f36::@return +f36::@return: scope:[f36] from f36 + [115] return + to:@return +f37: scope:[f37] from f36 + [116] phi() + [117] call f38 + to:f37::@return +f37::@return: scope:[f37] from f37 + [118] return + to:@return +f38: scope:[f38] from f37 + [119] phi() + [120] call f39 + to:f38::@return +f38::@return: scope:[f38] from f38 + [121] return + to:@return +f39: scope:[f39] from f38 + [122] phi() + [123] call f40 + to:f39::@return +f39::@return: scope:[f39] from f39 + [124] return + to:@return +f40: scope:[f40] from f39 + [125] phi() + [126] call f41 + to:f40::@return +f40::@return: scope:[f40] from f40 + [127] return + to:@return +f41: scope:[f41] from f40 + [128] phi() + [129] call f42 + to:f41::@return +f41::@return: scope:[f41] from f41 + [130] return + to:@return +f42: scope:[f42] from f41 + [131] phi() + [132] call f43 + to:f42::@return +f42::@return: scope:[f42] from f42 + [133] return + to:@return +f43: scope:[f43] from f42 + [134] phi() + [135] call f44 + to:f43::@return +f43::@return: scope:[f43] from f43 + [136] return + to:@return +f44: scope:[f44] from f43 + [137] phi() + [138] call f45 + to:f44::@return +f44::@return: scope:[f44] from f44 + [139] return + to:@return +f45: scope:[f45] from f44 + [140] phi() + [141] call f46 + to:f45::@return +f45::@return: scope:[f45] from f45 + [142] return + to:@return +f46: scope:[f46] from f45 + [143] phi() + [144] call f47 + to:f46::@return +f46::@return: scope:[f46] from f46 + [145] return + to:@return +f47: scope:[f47] from f46 + [146] phi() + [147] call f48 + to:f47::@return +f47::@return: scope:[f47] from f47 + [148] return + to:@return +f48: scope:[f48] from f47 + [149] phi() + [150] call f49 + to:f48::@return +f48::@return: scope:[f48] from f48 + [151] return + to:@return +f49: scope:[f49] from f48 + [152] phi() + [153] call f50 + to:f49::@return +f49::@return: scope:[f49] from f49 + [154] return + to:@return +f50: scope:[f50] from f49 + [155] phi() + [156] call f51 + to:f50::@return +f50::@return: scope:[f50] from f50 + [157] return + to:@return +f51: scope:[f51] from f50 + [158] phi() + [159] call f52 + to:f51::@return +f51::@return: scope:[f51] from f51 + [160] return + to:@return +f52: scope:[f52] from f51 + [161] phi() + [162] call f53 + to:f52::@return +f52::@return: scope:[f52] from f52 + [163] return + to:@return +f53: scope:[f53] from f52 + [164] phi() + [165] call f54 + to:f53::@return +f53::@return: scope:[f53] from f53 + [166] return + to:@return +f54: scope:[f54] from f53 + [167] phi() + [168] call f55 + to:f54::@return +f54::@return: scope:[f54] from f54 + [169] return + to:@return +f55: scope:[f55] from f54 + [170] phi() + [171] call f56 + to:f55::@return +f55::@return: scope:[f55] from f55 + [172] return + to:@return +f56: scope:[f56] from f55 + [173] phi() + [174] call f57 + to:f56::@return +f56::@return: scope:[f56] from f56 + [175] return + to:@return +f57: scope:[f57] from f56 + [176] phi() + [177] call f58 + to:f57::@return +f57::@return: scope:[f57] from f57 + [178] return + to:@return +f58: scope:[f58] from f57 + [179] phi() + [180] call f59 + to:f58::@return +f58::@return: scope:[f58] from f58 + [181] return + to:@return +f59: scope:[f59] from f58 + [182] phi() + [183] call f60 + to:f59::@return +f59::@return: scope:[f59] from f59 + [184] return + to:@return +f60: scope:[f60] from f59 + [185] phi() + [186] call f61 + to:f60::@return +f60::@return: scope:[f60] from f60 + [187] return + to:@return +f61: scope:[f61] from f60 + [188] phi() + [189] call f62 + to:f61::@return +f61::@return: scope:[f61] from f61 + [190] return + to:@return +f62: scope:[f62] from f61 + [191] phi() + [192] call f63 + to:f62::@return +f62::@return: scope:[f62] from f62 + [193] return + to:@return +f63: scope:[f63] from f62 + [194] phi() + [195] call f64 + to:f63::@return +f63::@return: scope:[f63] from f63 + [196] return + to:@return +f64: scope:[f64] from f63 + [197] phi() + [198] call f65 + to:f64::@return +f64::@return: scope:[f64] from f64 + [199] return + to:@return +f65: scope:[f65] from f64 + [200] phi() + [201] call f66 + to:f65::@return +f65::@return: scope:[f65] from f65 + [202] return + to:@return +f66: scope:[f66] from f65 + [203] phi() + [204] call f67 + to:f66::@return +f66::@return: scope:[f66] from f66 + [205] return + to:@return +f67: scope:[f67] from f66 + [206] phi() + [207] call f68 + to:f67::@return +f67::@return: scope:[f67] from f67 + [208] return + to:@return +f68: scope:[f68] from f67 + [209] phi() + [210] call f69 + to:f68::@return +f68::@return: scope:[f68] from f68 + [211] return + to:@return +f69: scope:[f69] from f68 + [212] phi() + [213] call f70 + to:f69::@return +f69::@return: scope:[f69] from f69 + [214] return + to:@return +f70: scope:[f70] from f69 + [215] phi() + [216] call f71 + to:f70::@return +f70::@return: scope:[f70] from f70 + [217] return + to:@return +f71: scope:[f71] from f70 + [218] phi() + [219] call f72 + to:f71::@return +f71::@return: scope:[f71] from f71 + [220] return + to:@return +f72: scope:[f72] from f71 + [221] phi() + [222] call f73 + to:f72::@return +f72::@return: scope:[f72] from f72 + [223] return + to:@return +f73: scope:[f73] from f72 + [224] phi() + [225] call f74 + to:f73::@return +f73::@return: scope:[f73] from f73 + [226] return + to:@return +f74: scope:[f74] from f73 + [227] phi() + [228] call f75 + to:f74::@return +f74::@return: scope:[f74] from f74 + [229] return + to:@return +f75: scope:[f75] from f74 + [230] phi() + [231] call f76 + to:f75::@return +f75::@return: scope:[f75] from f75 + [232] return + to:@return +f76: scope:[f76] from f75 + [233] phi() + [234] call f77 + to:f76::@return +f76::@return: scope:[f76] from f76 + [235] return + to:@return +f77: scope:[f77] from f76 + [236] phi() + [237] call f78 + to:f77::@return +f77::@return: scope:[f77] from f77 + [238] return + to:@return +f78: scope:[f78] from f77 + [239] phi() + [240] call f79 + to:f78::@return +f78::@return: scope:[f78] from f78 + [241] return + to:@return +f79: scope:[f79] from f78 + [242] phi() + [243] call f80 + to:f79::@return +f79::@return: scope:[f79] from f79 + [244] return + to:@return +f80: scope:[f80] from f79 + [245] phi() + [246] call f81 + to:f80::@return +f80::@return: scope:[f80] from f80 + [247] return + to:@return +f81: scope:[f81] from f80 + [248] phi() + [249] call f82 + to:f81::@return +f81::@return: scope:[f81] from f81 + [250] return + to:@return +f82: scope:[f82] from f81 + [251] phi() + [252] call f83 + to:f82::@return +f82::@return: scope:[f82] from f82 + [253] return + to:@return +f83: scope:[f83] from f82 + [254] phi() + [255] call f84 + to:f83::@return +f83::@return: scope:[f83] from f83 + [256] return + to:@return +f84: scope:[f84] from f83 + [257] phi() + [258] call f85 + to:f84::@return +f84::@return: scope:[f84] from f84 + [259] return + to:@return +f85: scope:[f85] from f84 + [260] phi() + [261] call f86 + to:f85::@return +f85::@return: scope:[f85] from f85 + [262] return + to:@return +f86: scope:[f86] from f85 + [263] phi() + [264] call f87 + to:f86::@return +f86::@return: scope:[f86] from f86 + [265] return + to:@return +f87: scope:[f87] from f86 + [266] phi() + [267] call f88 + to:f87::@return +f87::@return: scope:[f87] from f87 + [268] return + to:@return +f88: scope:[f88] from f87 + [269] phi() + [270] call f89 + to:f88::@return +f88::@return: scope:[f88] from f88 + [271] return + to:@return +f89: scope:[f89] from f88 + [272] phi() + [273] call f90 + to:f89::@return +f89::@return: scope:[f89] from f89 + [274] return + to:@return +f90: scope:[f90] from f89 + [275] phi() + [276] call f91 + to:f90::@return +f90::@return: scope:[f90] from f90 + [277] return + to:@return +f91: scope:[f91] from f90 + [278] phi() + [279] call f92 + to:f91::@return +f91::@return: scope:[f91] from f91 + [280] return + to:@return +f92: scope:[f92] from f91 + [281] phi() + [282] call f93 + to:f92::@return +f92::@return: scope:[f92] from f92 + [283] return + to:@return +f93: scope:[f93] from f92 + [284] phi() + [285] call f94 + to:f93::@return +f93::@return: scope:[f93] from f93 + [286] return + to:@return +f94: scope:[f94] from f93 + [287] phi() + [288] call f95 + to:f94::@return +f94::@return: scope:[f94] from f94 + [289] return + to:@return +f95: scope:[f95] from f94 + [290] phi() + [291] call f96 + to:f95::@return +f95::@return: scope:[f95] from f95 + [292] return + to:@return +f96: scope:[f96] from f95 + [293] phi() + [294] call f97 + to:f96::@return +f96::@return: scope:[f96] from f96 + [295] return + to:@return +f97: scope:[f97] from f96 + [296] phi() + [297] call f98 + to:f97::@return +f97::@return: scope:[f97] from f97 + [298] return + to:@return +f98: scope:[f98] from f97 + [299] phi() + [300] call f99 + to:f98::@return +f98::@return: scope:[f98] from f98 + [301] return + to:@return +f99: scope:[f99] from f98 + [302] phi() + [303] call f100 + to:f99::@return +f99::@return: scope:[f99] from f99 + [304] return + to:@return +f100: scope:[f100] from f99 + [305] phi() + to:f100::@return +f100::@return: scope:[f100] from f100 + [306] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte()) f1((byte) f1::x) +(byte) f1::return +(byte) f1::x +(byte()) f10((byte) f10::x) +(byte) f10::return +(byte) f10::x +(byte()) f100((byte) f100::x) +(byte) f100::return +(byte) f100::x +(byte()) f11((byte) f11::x) +(byte) f11::return +(byte) f11::x +(byte()) f12((byte) f12::x) +(byte) f12::return +(byte) f12::x +(byte()) f13((byte) f13::x) +(byte) f13::return +(byte) f13::x +(byte()) f14((byte) f14::x) +(byte) f14::return +(byte) f14::x +(byte()) f15((byte) f15::x) +(byte) f15::return +(byte) f15::x +(byte()) f16((byte) f16::x) +(byte) f16::return +(byte) f16::x +(byte()) f17((byte) f17::x) +(byte) f17::return +(byte) f17::x +(byte()) f18((byte) f18::x) +(byte) f18::return +(byte) f18::x +(byte()) f19((byte) f19::x) +(byte) f19::return +(byte) f19::x +(byte()) f2((byte) f2::x) +(byte) f2::return +(byte) f2::x +(byte()) f20((byte) f20::x) +(byte) f20::return +(byte) f20::x +(byte()) f21((byte) f21::x) +(byte) f21::return +(byte) f21::x +(byte()) f22((byte) f22::x) +(byte) f22::return +(byte) f22::x +(byte()) f23((byte) f23::x) +(byte) f23::return +(byte) f23::x +(byte()) f24((byte) f24::x) +(byte) f24::return +(byte) f24::x +(byte()) f25((byte) f25::x) +(byte) f25::return +(byte) f25::x +(byte()) f26((byte) f26::x) +(byte) f26::return +(byte) f26::x +(byte()) f27((byte) f27::x) +(byte) f27::return +(byte) f27::x +(byte()) f28((byte) f28::x) +(byte) f28::return +(byte) f28::x +(byte()) f29((byte) f29::x) +(byte) f29::return +(byte) f29::x +(byte()) f3((byte) f3::x) +(byte) f3::return +(byte) f3::x +(byte()) f30((byte) f30::x) +(byte) f30::return +(byte) f30::x +(byte()) f31((byte) f31::x) +(byte) f31::return +(byte) f31::x +(byte()) f32((byte) f32::x) +(byte) f32::return +(byte) f32::x +(byte()) f33((byte) f33::x) +(byte) f33::return +(byte) f33::x +(byte()) f34((byte) f34::x) +(byte) f34::return +(byte) f34::x +(byte()) f35((byte) f35::x) +(byte) f35::return +(byte) f35::x +(byte()) f36((byte) f36::x) +(byte) f36::return +(byte) f36::x +(byte()) f37((byte) f37::x) +(byte) f37::return +(byte) f37::x +(byte()) f38((byte) f38::x) +(byte) f38::return +(byte) f38::x +(byte()) f39((byte) f39::x) +(byte) f39::return +(byte) f39::x +(byte()) f4((byte) f4::x) +(byte) f4::return +(byte) f4::x +(byte()) f40((byte) f40::x) +(byte) f40::return +(byte) f40::x +(byte()) f41((byte) f41::x) +(byte) f41::return +(byte) f41::x +(byte()) f42((byte) f42::x) +(byte) f42::return +(byte) f42::x +(byte()) f43((byte) f43::x) +(byte) f43::return +(byte) f43::x +(byte()) f44((byte) f44::x) +(byte) f44::return +(byte) f44::x +(byte()) f45((byte) f45::x) +(byte) f45::return +(byte) f45::x +(byte()) f46((byte) f46::x) +(byte) f46::return +(byte) f46::x +(byte()) f47((byte) f47::x) +(byte) f47::return +(byte) f47::x +(byte()) f48((byte) f48::x) +(byte) f48::return +(byte) f48::x +(byte()) f49((byte) f49::x) +(byte) f49::return +(byte) f49::x +(byte()) f5((byte) f5::x) +(byte) f5::return +(byte) f5::x +(byte()) f50((byte) f50::x) +(byte) f50::return +(byte) f50::x +(byte()) f51((byte) f51::x) +(byte) f51::return +(byte) f51::x +(byte()) f52((byte) f52::x) +(byte) f52::return +(byte) f52::x +(byte()) f53((byte) f53::x) +(byte) f53::return +(byte) f53::x +(byte()) f54((byte) f54::x) +(byte) f54::return +(byte) f54::x +(byte()) f55((byte) f55::x) +(byte) f55::return +(byte) f55::x +(byte()) f56((byte) f56::x) +(byte) f56::return +(byte) f56::x +(byte()) f57((byte) f57::x) +(byte) f57::return +(byte) f57::x +(byte()) f58((byte) f58::x) +(byte) f58::return +(byte) f58::x +(byte()) f59((byte) f59::x) +(byte) f59::return +(byte) f59::x +(byte()) f6((byte) f6::x) +(byte) f6::return +(byte) f6::x +(byte()) f60((byte) f60::x) +(byte) f60::return +(byte) f60::x +(byte()) f61((byte) f61::x) +(byte) f61::return +(byte) f61::x +(byte()) f62((byte) f62::x) +(byte) f62::return +(byte) f62::x +(byte()) f63((byte) f63::x) +(byte) f63::return +(byte) f63::x +(byte()) f64((byte) f64::x) +(byte) f64::return +(byte) f64::x +(byte()) f65((byte) f65::x) +(byte) f65::return +(byte) f65::x +(byte()) f66((byte) f66::x) +(byte) f66::return +(byte) f66::x +(byte()) f67((byte) f67::x) +(byte) f67::return +(byte) f67::x +(byte()) f68((byte) f68::x) +(byte) f68::return +(byte) f68::x +(byte()) f69((byte) f69::x) +(byte) f69::return +(byte) f69::x +(byte()) f7((byte) f7::x) +(byte) f7::return +(byte) f7::x +(byte()) f70((byte) f70::x) +(byte) f70::return +(byte) f70::x +(byte()) f71((byte) f71::x) +(byte) f71::return +(byte) f71::x +(byte()) f72((byte) f72::x) +(byte) f72::return +(byte) f72::x +(byte()) f73((byte) f73::x) +(byte) f73::return +(byte) f73::x +(byte()) f74((byte) f74::x) +(byte) f74::return +(byte) f74::x +(byte()) f75((byte) f75::x) +(byte) f75::return +(byte) f75::x +(byte()) f76((byte) f76::x) +(byte) f76::return +(byte) f76::x +(byte()) f77((byte) f77::x) +(byte) f77::return +(byte) f77::x +(byte()) f78((byte) f78::x) +(byte) f78::return +(byte) f78::x +(byte()) f79((byte) f79::x) +(byte) f79::return +(byte) f79::x +(byte()) f8((byte) f8::x) +(byte) f8::return +(byte) f8::x +(byte()) f80((byte) f80::x) +(byte) f80::return +(byte) f80::x +(byte()) f81((byte) f81::x) +(byte) f81::return +(byte) f81::x +(byte()) f82((byte) f82::x) +(byte) f82::return +(byte) f82::x +(byte()) f83((byte) f83::x) +(byte) f83::return +(byte) f83::x +(byte()) f84((byte) f84::x) +(byte) f84::return +(byte) f84::x +(byte()) f85((byte) f85::x) +(byte) f85::return +(byte) f85::x +(byte()) f86((byte) f86::x) +(byte) f86::return +(byte) f86::x +(byte()) f87((byte) f87::x) +(byte) f87::return +(byte) f87::x +(byte()) f88((byte) f88::x) +(byte) f88::return +(byte) f88::x +(byte()) f89((byte) f89::x) +(byte) f89::return +(byte) f89::x +(byte()) f9((byte) f9::x) +(byte) f9::return +(byte) f9::x +(byte()) f90((byte) f90::x) +(byte) f90::return +(byte) f90::x +(byte()) f91((byte) f91::x) +(byte) f91::return +(byte) f91::x +(byte()) f92((byte) f92::x) +(byte) f92::return +(byte) f92::x +(byte()) f93((byte) f93::x) +(byte) f93::return +(byte) f93::x +(byte()) f94((byte) f94::x) +(byte) f94::return +(byte) f94::x +(byte()) f95((byte) f95::x) +(byte) f95::return +(byte) f95::x +(byte()) f96((byte) f96::x) +(byte) f96::return +(byte) f96::x +(byte()) f97((byte) f97::x) +(byte) f97::return +(byte) f97::x +(byte()) f98((byte) f98::x) +(byte) f98::return +(byte) f98::x +(byte()) f99((byte) f99::x) +(byte) f99::return +(byte) f99::x +(void()) main() +(byte) main::reverse +(byte*) main::screen + +Initial phi equivalence classes +Complete equivalence classes + +INITIAL ASM +//SEG0 File Comments +// Test that the compiler handles deep nesting well -- mainly a performance issue. +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG9 @end +bend: +//SEG10 main +main: { + .label screen = $400 + //SEG11 [5] call f1 + //SEG12 [8] phi from main to f1 [phi:main->f1] + f1_from_main: + jsr f1 + jmp b1 + //SEG13 main::@1 + b1: + //SEG14 [6] *((const byte*) main::screen#0) ← (const byte) f1::return#1 -- _deref_pbuc1=vbuc2 + lda #f1.return + sta screen + jmp breturn + //SEG15 main::@return + breturn: + //SEG16 [7] return + rts +} +//SEG17 f1 +f1: { + .label x = 0 + .label return = f2.return+1 + //SEG18 [9] call f2 + //SEG19 [11] phi from f1 to f2 [phi:f1->f2] + f2_from_f1: + jsr f2 + jmp breturn + //SEG20 f1::@return + breturn: + //SEG21 [10] return + rts +} +//SEG22 f2 +f2: { + .label return = f3.return+1 + //SEG23 [12] call f3 + //SEG24 [14] phi from f2 to f3 [phi:f2->f3] + f3_from_f2: + jsr f3 + jmp breturn + //SEG25 f2::@return + breturn: + //SEG26 [13] return + rts +} +//SEG27 f3 +f3: { + .label return = f4.return+1 + //SEG28 [15] call f4 + //SEG29 [17] phi from f3 to f4 [phi:f3->f4] + f4_from_f3: + jsr f4 + jmp breturn + //SEG30 f3::@return + breturn: + //SEG31 [16] return + rts +} +//SEG32 f4 +f4: { + .label return = f5.return+1 + //SEG33 [18] call f5 + //SEG34 [20] phi from f4 to f5 [phi:f4->f5] + f5_from_f4: + jsr f5 + jmp breturn + //SEG35 f4::@return + breturn: + //SEG36 [19] return + rts +} +//SEG37 f5 +f5: { + .label return = f6.return+1 + //SEG38 [21] call f6 + //SEG39 [23] phi from f5 to f6 [phi:f5->f6] + f6_from_f5: + jsr f6 + jmp breturn + //SEG40 f5::@return + breturn: + //SEG41 [22] return + rts +} +//SEG42 f6 +f6: { + .label return = f7.return+1 + //SEG43 [24] call f7 + //SEG44 [26] phi from f6 to f7 [phi:f6->f7] + f7_from_f6: + jsr f7 + jmp breturn + //SEG45 f6::@return + breturn: + //SEG46 [25] return + rts +} +//SEG47 f7 +f7: { + .label return = f8.return+1 + //SEG48 [27] call f8 + //SEG49 [29] phi from f7 to f8 [phi:f7->f8] + f8_from_f7: + jsr f8 + jmp breturn + //SEG50 f7::@return + breturn: + //SEG51 [28] return + rts +} +//SEG52 f8 +f8: { + .label return = f9.return+1 + //SEG53 [30] call f9 + //SEG54 [32] phi from f8 to f9 [phi:f8->f9] + f9_from_f8: + jsr f9 + jmp breturn + //SEG55 f8::@return + breturn: + //SEG56 [31] return + rts +} +//SEG57 f9 +f9: { + .label return = f10.return+1 + //SEG58 [33] call f10 + //SEG59 [35] phi from f9 to f10 [phi:f9->f10] + f10_from_f9: + jsr f10 + jmp breturn + //SEG60 f9::@return + breturn: + //SEG61 [34] return + rts +} +//SEG62 f10 +f10: { + .label return = f11.return+1 + //SEG63 [36] call f11 + //SEG64 [38] phi from f10 to f11 [phi:f10->f11] + f11_from_f10: + jsr f11 + jmp breturn + //SEG65 f10::@return + breturn: + //SEG66 [37] return + rts +} +//SEG67 f11 +f11: { + .label return = f12.return+1 + //SEG68 [39] call f12 + //SEG69 [41] phi from f11 to f12 [phi:f11->f12] + f12_from_f11: + jsr f12 + jmp breturn + //SEG70 f11::@return + breturn: + //SEG71 [40] return + rts +} +//SEG72 f12 +f12: { + .label return = f13.return+1 + //SEG73 [42] call f13 + //SEG74 [44] phi from f12 to f13 [phi:f12->f13] + f13_from_f12: + jsr f13 + jmp breturn + //SEG75 f12::@return + breturn: + //SEG76 [43] return + rts +} +//SEG77 f13 +f13: { + .label return = f14.return+1 + //SEG78 [45] call f14 + //SEG79 [47] phi from f13 to f14 [phi:f13->f14] + f14_from_f13: + jsr f14 + jmp breturn + //SEG80 f13::@return + breturn: + //SEG81 [46] return + rts +} +//SEG82 f14 +f14: { + .label return = f15.return+1 + //SEG83 [48] call f15 + //SEG84 [50] phi from f14 to f15 [phi:f14->f15] + f15_from_f14: + jsr f15 + jmp breturn + //SEG85 f14::@return + breturn: + //SEG86 [49] return + rts +} +//SEG87 f15 +f15: { + .label return = f16.return+1 + //SEG88 [51] call f16 + //SEG89 [53] phi from f15 to f16 [phi:f15->f16] + f16_from_f15: + jsr f16 + jmp breturn + //SEG90 f15::@return + breturn: + //SEG91 [52] return + rts +} +//SEG92 f16 +f16: { + .label return = f17.return+1 + //SEG93 [54] call f17 + //SEG94 [56] phi from f16 to f17 [phi:f16->f17] + f17_from_f16: + jsr f17 + jmp breturn + //SEG95 f16::@return + breturn: + //SEG96 [55] return + rts +} +//SEG97 f17 +f17: { + .label return = f18.return+1 + //SEG98 [57] call f18 + //SEG99 [59] phi from f17 to f18 [phi:f17->f18] + f18_from_f17: + jsr f18 + jmp breturn + //SEG100 f17::@return + breturn: + //SEG101 [58] return + rts +} +//SEG102 f18 +f18: { + .label return = f19.return+1 + //SEG103 [60] call f19 + //SEG104 [62] phi from f18 to f19 [phi:f18->f19] + f19_from_f18: + jsr f19 + jmp breturn + //SEG105 f18::@return + breturn: + //SEG106 [61] return + rts +} +//SEG107 f19 +f19: { + .label return = f20.return+1 + //SEG108 [63] call f20 + //SEG109 [65] phi from f19 to f20 [phi:f19->f20] + f20_from_f19: + jsr f20 + jmp breturn + //SEG110 f19::@return + breturn: + //SEG111 [64] return + rts +} +//SEG112 f20 +f20: { + .label return = f21.return+1 + //SEG113 [66] call f21 + //SEG114 [68] phi from f20 to f21 [phi:f20->f21] + f21_from_f20: + jsr f21 + jmp breturn + //SEG115 f20::@return + breturn: + //SEG116 [67] return + rts +} +//SEG117 f21 +f21: { + .label return = f22.return+1 + //SEG118 [69] call f22 + //SEG119 [71] phi from f21 to f22 [phi:f21->f22] + f22_from_f21: + jsr f22 + jmp breturn + //SEG120 f21::@return + breturn: + //SEG121 [70] return + rts +} +//SEG122 f22 +f22: { + .label return = f23.return+1 + //SEG123 [72] call f23 + //SEG124 [74] phi from f22 to f23 [phi:f22->f23] + f23_from_f22: + jsr f23 + jmp breturn + //SEG125 f22::@return + breturn: + //SEG126 [73] return + rts +} +//SEG127 f23 +f23: { + .label return = f24.return+1 + //SEG128 [75] call f24 + //SEG129 [77] phi from f23 to f24 [phi:f23->f24] + f24_from_f23: + jsr f24 + jmp breturn + //SEG130 f23::@return + breturn: + //SEG131 [76] return + rts +} +//SEG132 f24 +f24: { + .label return = f25.return+1 + //SEG133 [78] call f25 + //SEG134 [80] phi from f24 to f25 [phi:f24->f25] + f25_from_f24: + jsr f25 + jmp breturn + //SEG135 f24::@return + breturn: + //SEG136 [79] return + rts +} +//SEG137 f25 +f25: { + .label return = f26.return+1 + //SEG138 [81] call f26 + //SEG139 [83] phi from f25 to f26 [phi:f25->f26] + f26_from_f25: + jsr f26 + jmp breturn + //SEG140 f25::@return + breturn: + //SEG141 [82] return + rts +} +//SEG142 f26 +f26: { + .label return = f27.return+1 + //SEG143 [84] call f27 + //SEG144 [86] phi from f26 to f27 [phi:f26->f27] + f27_from_f26: + jsr f27 + jmp breturn + //SEG145 f26::@return + breturn: + //SEG146 [85] return + rts +} +//SEG147 f27 +f27: { + .label return = f28.return+1 + //SEG148 [87] call f28 + //SEG149 [89] phi from f27 to f28 [phi:f27->f28] + f28_from_f27: + jsr f28 + jmp breturn + //SEG150 f27::@return + breturn: + //SEG151 [88] return + rts +} +//SEG152 f28 +f28: { + .label return = f29.return+1 + //SEG153 [90] call f29 + //SEG154 [92] phi from f28 to f29 [phi:f28->f29] + f29_from_f28: + jsr f29 + jmp breturn + //SEG155 f28::@return + breturn: + //SEG156 [91] return + rts +} +//SEG157 f29 +f29: { + .label return = f30.return+1 + //SEG158 [93] call f30 + //SEG159 [95] phi from f29 to f30 [phi:f29->f30] + f30_from_f29: + jsr f30 + jmp breturn + //SEG160 f29::@return + breturn: + //SEG161 [94] return + rts +} +//SEG162 f30 +f30: { + .label return = f31.return+1 + //SEG163 [96] call f31 + //SEG164 [98] phi from f30 to f31 [phi:f30->f31] + f31_from_f30: + jsr f31 + jmp breturn + //SEG165 f30::@return + breturn: + //SEG166 [97] return + rts +} +//SEG167 f31 +f31: { + .label return = f32.return+1 + //SEG168 [99] call f32 + //SEG169 [101] phi from f31 to f32 [phi:f31->f32] + f32_from_f31: + jsr f32 + jmp breturn + //SEG170 f31::@return + breturn: + //SEG171 [100] return + rts +} +//SEG172 f32 +f32: { + .label return = f33.return+1 + //SEG173 [102] call f33 + //SEG174 [104] phi from f32 to f33 [phi:f32->f33] + f33_from_f32: + jsr f33 + jmp breturn + //SEG175 f32::@return + breturn: + //SEG176 [103] return + rts +} +//SEG177 f33 +f33: { + .label return = f34.return+1 + //SEG178 [105] call f34 + //SEG179 [107] phi from f33 to f34 [phi:f33->f34] + f34_from_f33: + jsr f34 + jmp breturn + //SEG180 f33::@return + breturn: + //SEG181 [106] return + rts +} +//SEG182 f34 +f34: { + .label return = f35.return+1 + //SEG183 [108] call f35 + //SEG184 [110] phi from f34 to f35 [phi:f34->f35] + f35_from_f34: + jsr f35 + jmp breturn + //SEG185 f34::@return + breturn: + //SEG186 [109] return + rts +} +//SEG187 f35 +f35: { + .label return = f36.return+1 + //SEG188 [111] call f36 + //SEG189 [113] phi from f35 to f36 [phi:f35->f36] + f36_from_f35: + jsr f36 + jmp breturn + //SEG190 f35::@return + breturn: + //SEG191 [112] return + rts +} +//SEG192 f36 +f36: { + .label return = f37.return+1 + //SEG193 [114] call f37 + //SEG194 [116] phi from f36 to f37 [phi:f36->f37] + f37_from_f36: + jsr f37 + jmp breturn + //SEG195 f36::@return + breturn: + //SEG196 [115] return + rts +} +//SEG197 f37 +f37: { + .label return = f38.return+1 + //SEG198 [117] call f38 + //SEG199 [119] phi from f37 to f38 [phi:f37->f38] + f38_from_f37: + jsr f38 + jmp breturn + //SEG200 f37::@return + breturn: + //SEG201 [118] return + rts +} +//SEG202 f38 +f38: { + .label return = f39.return+1 + //SEG203 [120] call f39 + //SEG204 [122] phi from f38 to f39 [phi:f38->f39] + f39_from_f38: + jsr f39 + jmp breturn + //SEG205 f38::@return + breturn: + //SEG206 [121] return + rts +} +//SEG207 f39 +f39: { + .label return = f40.return+1 + //SEG208 [123] call f40 + //SEG209 [125] phi from f39 to f40 [phi:f39->f40] + f40_from_f39: + jsr f40 + jmp breturn + //SEG210 f39::@return + breturn: + //SEG211 [124] return + rts +} +//SEG212 f40 +f40: { + .label return = f41.return+1 + //SEG213 [126] call f41 + //SEG214 [128] phi from f40 to f41 [phi:f40->f41] + f41_from_f40: + jsr f41 + jmp breturn + //SEG215 f40::@return + breturn: + //SEG216 [127] return + rts +} +//SEG217 f41 +f41: { + .label return = f42.return+1 + //SEG218 [129] call f42 + //SEG219 [131] phi from f41 to f42 [phi:f41->f42] + f42_from_f41: + jsr f42 + jmp breturn + //SEG220 f41::@return + breturn: + //SEG221 [130] return + rts +} +//SEG222 f42 +f42: { + .label return = f43.return+1 + //SEG223 [132] call f43 + //SEG224 [134] phi from f42 to f43 [phi:f42->f43] + f43_from_f42: + jsr f43 + jmp breturn + //SEG225 f42::@return + breturn: + //SEG226 [133] return + rts +} +//SEG227 f43 +f43: { + .label return = f44.return+1 + //SEG228 [135] call f44 + //SEG229 [137] phi from f43 to f44 [phi:f43->f44] + f44_from_f43: + jsr f44 + jmp breturn + //SEG230 f43::@return + breturn: + //SEG231 [136] return + rts +} +//SEG232 f44 +f44: { + .label return = f45.return+1 + //SEG233 [138] call f45 + //SEG234 [140] phi from f44 to f45 [phi:f44->f45] + f45_from_f44: + jsr f45 + jmp breturn + //SEG235 f44::@return + breturn: + //SEG236 [139] return + rts +} +//SEG237 f45 +f45: { + .label return = f46.return+1 + //SEG238 [141] call f46 + //SEG239 [143] phi from f45 to f46 [phi:f45->f46] + f46_from_f45: + jsr f46 + jmp breturn + //SEG240 f45::@return + breturn: + //SEG241 [142] return + rts +} +//SEG242 f46 +f46: { + .label return = f47.return+1 + //SEG243 [144] call f47 + //SEG244 [146] phi from f46 to f47 [phi:f46->f47] + f47_from_f46: + jsr f47 + jmp breturn + //SEG245 f46::@return + breturn: + //SEG246 [145] return + rts +} +//SEG247 f47 +f47: { + .label return = f48.return+1 + //SEG248 [147] call f48 + //SEG249 [149] phi from f47 to f48 [phi:f47->f48] + f48_from_f47: + jsr f48 + jmp breturn + //SEG250 f47::@return + breturn: + //SEG251 [148] return + rts +} +//SEG252 f48 +f48: { + .label return = f49.return+1 + //SEG253 [150] call f49 + //SEG254 [152] phi from f48 to f49 [phi:f48->f49] + f49_from_f48: + jsr f49 + jmp breturn + //SEG255 f48::@return + breturn: + //SEG256 [151] return + rts +} +//SEG257 f49 +f49: { + .label return = f50.return+1 + //SEG258 [153] call f50 + //SEG259 [155] phi from f49 to f50 [phi:f49->f50] + f50_from_f49: + jsr f50 + jmp breturn + //SEG260 f49::@return + breturn: + //SEG261 [154] return + rts +} +//SEG262 f50 +f50: { + .label return = f51.return+1 + //SEG263 [156] call f51 + //SEG264 [158] phi from f50 to f51 [phi:f50->f51] + f51_from_f50: + jsr f51 + jmp breturn + //SEG265 f50::@return + breturn: + //SEG266 [157] return + rts +} +//SEG267 f51 +f51: { + .label return = f52.return+1 + //SEG268 [159] call f52 + //SEG269 [161] phi from f51 to f52 [phi:f51->f52] + f52_from_f51: + jsr f52 + jmp breturn + //SEG270 f51::@return + breturn: + //SEG271 [160] return + rts +} +//SEG272 f52 +f52: { + .label return = f53.return+1 + //SEG273 [162] call f53 + //SEG274 [164] phi from f52 to f53 [phi:f52->f53] + f53_from_f52: + jsr f53 + jmp breturn + //SEG275 f52::@return + breturn: + //SEG276 [163] return + rts +} +//SEG277 f53 +f53: { + .label return = f54.return+1 + //SEG278 [165] call f54 + //SEG279 [167] phi from f53 to f54 [phi:f53->f54] + f54_from_f53: + jsr f54 + jmp breturn + //SEG280 f53::@return + breturn: + //SEG281 [166] return + rts +} +//SEG282 f54 +f54: { + .label return = f55.return+1 + //SEG283 [168] call f55 + //SEG284 [170] phi from f54 to f55 [phi:f54->f55] + f55_from_f54: + jsr f55 + jmp breturn + //SEG285 f54::@return + breturn: + //SEG286 [169] return + rts +} +//SEG287 f55 +f55: { + .label return = f56.return+1 + //SEG288 [171] call f56 + //SEG289 [173] phi from f55 to f56 [phi:f55->f56] + f56_from_f55: + jsr f56 + jmp breturn + //SEG290 f55::@return + breturn: + //SEG291 [172] return + rts +} +//SEG292 f56 +f56: { + .label return = f57.return+1 + //SEG293 [174] call f57 + //SEG294 [176] phi from f56 to f57 [phi:f56->f57] + f57_from_f56: + jsr f57 + jmp breturn + //SEG295 f56::@return + breturn: + //SEG296 [175] return + rts +} +//SEG297 f57 +f57: { + .label return = f58.return+1 + //SEG298 [177] call f58 + //SEG299 [179] phi from f57 to f58 [phi:f57->f58] + f58_from_f57: + jsr f58 + jmp breturn + //SEG300 f57::@return + breturn: + //SEG301 [178] return + rts +} +//SEG302 f58 +f58: { + .label return = f59.return+1 + //SEG303 [180] call f59 + //SEG304 [182] phi from f58 to f59 [phi:f58->f59] + f59_from_f58: + jsr f59 + jmp breturn + //SEG305 f58::@return + breturn: + //SEG306 [181] return + rts +} +//SEG307 f59 +f59: { + .label return = f60.return+1 + //SEG308 [183] call f60 + //SEG309 [185] phi from f59 to f60 [phi:f59->f60] + f60_from_f59: + jsr f60 + jmp breturn + //SEG310 f59::@return + breturn: + //SEG311 [184] return + rts +} +//SEG312 f60 +f60: { + .label return = f61.return+1 + //SEG313 [186] call f61 + //SEG314 [188] phi from f60 to f61 [phi:f60->f61] + f61_from_f60: + jsr f61 + jmp breturn + //SEG315 f60::@return + breturn: + //SEG316 [187] return + rts +} +//SEG317 f61 +f61: { + .label return = f62.return+1 + //SEG318 [189] call f62 + //SEG319 [191] phi from f61 to f62 [phi:f61->f62] + f62_from_f61: + jsr f62 + jmp breturn + //SEG320 f61::@return + breturn: + //SEG321 [190] return + rts +} +//SEG322 f62 +f62: { + .label return = f63.return+1 + //SEG323 [192] call f63 + //SEG324 [194] phi from f62 to f63 [phi:f62->f63] + f63_from_f62: + jsr f63 + jmp breturn + //SEG325 f62::@return + breturn: + //SEG326 [193] return + rts +} +//SEG327 f63 +f63: { + .label return = f64.return+1 + //SEG328 [195] call f64 + //SEG329 [197] phi from f63 to f64 [phi:f63->f64] + f64_from_f63: + jsr f64 + jmp breturn + //SEG330 f63::@return + breturn: + //SEG331 [196] return + rts +} +//SEG332 f64 +f64: { + .label return = f65.return+1 + //SEG333 [198] call f65 + //SEG334 [200] phi from f64 to f65 [phi:f64->f65] + f65_from_f64: + jsr f65 + jmp breturn + //SEG335 f64::@return + breturn: + //SEG336 [199] return + rts +} +//SEG337 f65 +f65: { + .label return = f66.return+1 + //SEG338 [201] call f66 + //SEG339 [203] phi from f65 to f66 [phi:f65->f66] + f66_from_f65: + jsr f66 + jmp breturn + //SEG340 f65::@return + breturn: + //SEG341 [202] return + rts +} +//SEG342 f66 +f66: { + .label return = f67.return+1 + //SEG343 [204] call f67 + //SEG344 [206] phi from f66 to f67 [phi:f66->f67] + f67_from_f66: + jsr f67 + jmp breturn + //SEG345 f66::@return + breturn: + //SEG346 [205] return + rts +} +//SEG347 f67 +f67: { + .label return = f68.return+1 + //SEG348 [207] call f68 + //SEG349 [209] phi from f67 to f68 [phi:f67->f68] + f68_from_f67: + jsr f68 + jmp breturn + //SEG350 f67::@return + breturn: + //SEG351 [208] return + rts +} +//SEG352 f68 +f68: { + .label return = f69.return+1 + //SEG353 [210] call f69 + //SEG354 [212] phi from f68 to f69 [phi:f68->f69] + f69_from_f68: + jsr f69 + jmp breturn + //SEG355 f68::@return + breturn: + //SEG356 [211] return + rts +} +//SEG357 f69 +f69: { + .label return = f70.return+1 + //SEG358 [213] call f70 + //SEG359 [215] phi from f69 to f70 [phi:f69->f70] + f70_from_f69: + jsr f70 + jmp breturn + //SEG360 f69::@return + breturn: + //SEG361 [214] return + rts +} +//SEG362 f70 +f70: { + .label return = f71.return+1 + //SEG363 [216] call f71 + //SEG364 [218] phi from f70 to f71 [phi:f70->f71] + f71_from_f70: + jsr f71 + jmp breturn + //SEG365 f70::@return + breturn: + //SEG366 [217] return + rts +} +//SEG367 f71 +f71: { + .label return = f72.return+1 + //SEG368 [219] call f72 + //SEG369 [221] phi from f71 to f72 [phi:f71->f72] + f72_from_f71: + jsr f72 + jmp breturn + //SEG370 f71::@return + breturn: + //SEG371 [220] return + rts +} +//SEG372 f72 +f72: { + .label return = f73.return+1 + //SEG373 [222] call f73 + //SEG374 [224] phi from f72 to f73 [phi:f72->f73] + f73_from_f72: + jsr f73 + jmp breturn + //SEG375 f72::@return + breturn: + //SEG376 [223] return + rts +} +//SEG377 f73 +f73: { + .label return = f74.return+1 + //SEG378 [225] call f74 + //SEG379 [227] phi from f73 to f74 [phi:f73->f74] + f74_from_f73: + jsr f74 + jmp breturn + //SEG380 f73::@return + breturn: + //SEG381 [226] return + rts +} +//SEG382 f74 +f74: { + .label return = f75.return+1 + //SEG383 [228] call f75 + //SEG384 [230] phi from f74 to f75 [phi:f74->f75] + f75_from_f74: + jsr f75 + jmp breturn + //SEG385 f74::@return + breturn: + //SEG386 [229] return + rts +} +//SEG387 f75 +f75: { + .label return = f76.return+1 + //SEG388 [231] call f76 + //SEG389 [233] phi from f75 to f76 [phi:f75->f76] + f76_from_f75: + jsr f76 + jmp breturn + //SEG390 f75::@return + breturn: + //SEG391 [232] return + rts +} +//SEG392 f76 +f76: { + .label return = f77.return+1 + //SEG393 [234] call f77 + //SEG394 [236] phi from f76 to f77 [phi:f76->f77] + f77_from_f76: + jsr f77 + jmp breturn + //SEG395 f76::@return + breturn: + //SEG396 [235] return + rts +} +//SEG397 f77 +f77: { + .label return = f78.return+1 + //SEG398 [237] call f78 + //SEG399 [239] phi from f77 to f78 [phi:f77->f78] + f78_from_f77: + jsr f78 + jmp breturn + //SEG400 f77::@return + breturn: + //SEG401 [238] return + rts +} +//SEG402 f78 +f78: { + .label return = f79.return+1 + //SEG403 [240] call f79 + //SEG404 [242] phi from f78 to f79 [phi:f78->f79] + f79_from_f78: + jsr f79 + jmp breturn + //SEG405 f78::@return + breturn: + //SEG406 [241] return + rts +} +//SEG407 f79 +f79: { + .label return = f80.return+1 + //SEG408 [243] call f80 + //SEG409 [245] phi from f79 to f80 [phi:f79->f80] + f80_from_f79: + jsr f80 + jmp breturn + //SEG410 f79::@return + breturn: + //SEG411 [244] return + rts +} +//SEG412 f80 +f80: { + .label return = f81.return+1 + //SEG413 [246] call f81 + //SEG414 [248] phi from f80 to f81 [phi:f80->f81] + f81_from_f80: + jsr f81 + jmp breturn + //SEG415 f80::@return + breturn: + //SEG416 [247] return + rts +} +//SEG417 f81 +f81: { + .label return = f82.return+1 + //SEG418 [249] call f82 + //SEG419 [251] phi from f81 to f82 [phi:f81->f82] + f82_from_f81: + jsr f82 + jmp breturn + //SEG420 f81::@return + breturn: + //SEG421 [250] return + rts +} +//SEG422 f82 +f82: { + .label return = f83.return+1 + //SEG423 [252] call f83 + //SEG424 [254] phi from f82 to f83 [phi:f82->f83] + f83_from_f82: + jsr f83 + jmp breturn + //SEG425 f82::@return + breturn: + //SEG426 [253] return + rts +} +//SEG427 f83 +f83: { + .label return = f84.return+1 + //SEG428 [255] call f84 + //SEG429 [257] phi from f83 to f84 [phi:f83->f84] + f84_from_f83: + jsr f84 + jmp breturn + //SEG430 f83::@return + breturn: + //SEG431 [256] return + rts +} +//SEG432 f84 +f84: { + .label return = f85.return+1 + //SEG433 [258] call f85 + //SEG434 [260] phi from f84 to f85 [phi:f84->f85] + f85_from_f84: + jsr f85 + jmp breturn + //SEG435 f84::@return + breturn: + //SEG436 [259] return + rts +} +//SEG437 f85 +f85: { + .label return = f86.return+1 + //SEG438 [261] call f86 + //SEG439 [263] phi from f85 to f86 [phi:f85->f86] + f86_from_f85: + jsr f86 + jmp breturn + //SEG440 f85::@return + breturn: + //SEG441 [262] return + rts +} +//SEG442 f86 +f86: { + .label return = f87.return+1 + //SEG443 [264] call f87 + //SEG444 [266] phi from f86 to f87 [phi:f86->f87] + f87_from_f86: + jsr f87 + jmp breturn + //SEG445 f86::@return + breturn: + //SEG446 [265] return + rts +} +//SEG447 f87 +f87: { + .label return = f88.return+1 + //SEG448 [267] call f88 + //SEG449 [269] phi from f87 to f88 [phi:f87->f88] + f88_from_f87: + jsr f88 + jmp breturn + //SEG450 f87::@return + breturn: + //SEG451 [268] return + rts +} +//SEG452 f88 +f88: { + .label return = f89.return+1 + //SEG453 [270] call f89 + //SEG454 [272] phi from f88 to f89 [phi:f88->f89] + f89_from_f88: + jsr f89 + jmp breturn + //SEG455 f88::@return + breturn: + //SEG456 [271] return + rts +} +//SEG457 f89 +f89: { + .label return = f90.return+1 + //SEG458 [273] call f90 + //SEG459 [275] phi from f89 to f90 [phi:f89->f90] + f90_from_f89: + jsr f90 + jmp breturn + //SEG460 f89::@return + breturn: + //SEG461 [274] return + rts +} +//SEG462 f90 +f90: { + .label return = f91.return+1 + //SEG463 [276] call f91 + //SEG464 [278] phi from f90 to f91 [phi:f90->f91] + f91_from_f90: + jsr f91 + jmp breturn + //SEG465 f90::@return + breturn: + //SEG466 [277] return + rts +} +//SEG467 f91 +f91: { + .label return = f92.return+1 + //SEG468 [279] call f92 + //SEG469 [281] phi from f91 to f92 [phi:f91->f92] + f92_from_f91: + jsr f92 + jmp breturn + //SEG470 f91::@return + breturn: + //SEG471 [280] return + rts +} +//SEG472 f92 +f92: { + .label return = f93.return+1 + //SEG473 [282] call f93 + //SEG474 [284] phi from f92 to f93 [phi:f92->f93] + f93_from_f92: + jsr f93 + jmp breturn + //SEG475 f92::@return + breturn: + //SEG476 [283] return + rts +} +//SEG477 f93 +f93: { + .label return = f94.return+1 + //SEG478 [285] call f94 + //SEG479 [287] phi from f93 to f94 [phi:f93->f94] + f94_from_f93: + jsr f94 + jmp breturn + //SEG480 f93::@return + breturn: + //SEG481 [286] return + rts +} +//SEG482 f94 +f94: { + .label return = f95.return+1 + //SEG483 [288] call f95 + //SEG484 [290] phi from f94 to f95 [phi:f94->f95] + f95_from_f94: + jsr f95 + jmp breturn + //SEG485 f94::@return + breturn: + //SEG486 [289] return + rts +} +//SEG487 f95 +f95: { + .label return = f96.return+1 + //SEG488 [291] call f96 + //SEG489 [293] phi from f95 to f96 [phi:f95->f96] + f96_from_f95: + jsr f96 + jmp breturn + //SEG490 f95::@return + breturn: + //SEG491 [292] return + rts +} +//SEG492 f96 +f96: { + .label return = f97.return+1 + //SEG493 [294] call f97 + //SEG494 [296] phi from f96 to f97 [phi:f96->f97] + f97_from_f96: + jsr f97 + jmp breturn + //SEG495 f96::@return + breturn: + //SEG496 [295] return + rts +} +//SEG497 f97 +f97: { + .label return = f98.return+1 + //SEG498 [297] call f98 + //SEG499 [299] phi from f97 to f98 [phi:f97->f98] + f98_from_f97: + jsr f98 + jmp breturn + //SEG500 f97::@return + breturn: + //SEG501 [298] return + rts +} +//SEG502 f98 +f98: { + .label return = f99.return+1 + //SEG503 [300] call f99 + //SEG504 [302] phi from f98 to f99 [phi:f98->f99] + f99_from_f98: + jsr f99 + jmp breturn + //SEG505 f98::@return + breturn: + //SEG506 [301] return + rts +} +//SEG507 f99 +f99: { + .label return = f1.x+1 + //SEG508 [303] call f100 + //SEG509 [305] phi from f99 to f100 [phi:f99->f100] + f100_from_f99: + jsr f100 + jmp breturn + //SEG510 f99::@return + breturn: + //SEG511 [304] return + rts +} +//SEG512 f100 +f100: { + jmp breturn + //SEG513 f100::@return + breturn: + //SEG514 [306] return + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [6] *((const byte*) main::screen#0) ← (const byte) f1::return#1 [ ] ( main:2 [ ] ) always clobbers reg byte a + +REGISTER UPLIFT SCOPES +Uplift Scope [main] +Uplift Scope [f1] +Uplift Scope [f2] +Uplift Scope [f3] +Uplift Scope [f4] +Uplift Scope [f5] +Uplift Scope [f6] +Uplift Scope [f7] +Uplift Scope [f8] +Uplift Scope [f9] +Uplift Scope [f10] +Uplift Scope [f11] +Uplift Scope [f12] +Uplift Scope [f13] +Uplift Scope [f14] +Uplift Scope [f15] +Uplift Scope [f16] +Uplift Scope [f17] +Uplift Scope [f18] +Uplift Scope [f19] +Uplift Scope [f20] +Uplift Scope [f21] +Uplift Scope [f22] +Uplift Scope [f23] +Uplift Scope [f24] +Uplift Scope [f25] +Uplift Scope [f26] +Uplift Scope [f27] +Uplift Scope [f28] +Uplift Scope [f29] +Uplift Scope [f30] +Uplift Scope [f31] +Uplift Scope [f32] +Uplift Scope [f33] +Uplift Scope [f34] +Uplift Scope [f35] +Uplift Scope [f36] +Uplift Scope [f37] +Uplift Scope [f38] +Uplift Scope [f39] +Uplift Scope [f40] +Uplift Scope [f41] +Uplift Scope [f42] +Uplift Scope [f43] +Uplift Scope [f44] +Uplift Scope [f45] +Uplift Scope [f46] +Uplift Scope [f47] +Uplift Scope [f48] +Uplift Scope [f49] +Uplift Scope [f50] +Uplift Scope [f51] +Uplift Scope [f52] +Uplift Scope [f53] +Uplift Scope [f54] +Uplift Scope [f55] +Uplift Scope [f56] +Uplift Scope [f57] +Uplift Scope [f58] +Uplift Scope [f59] +Uplift Scope [f60] +Uplift Scope [f61] +Uplift Scope [f62] +Uplift Scope [f63] +Uplift Scope [f64] +Uplift Scope [f65] +Uplift Scope [f66] +Uplift Scope [f67] +Uplift Scope [f68] +Uplift Scope [f69] +Uplift Scope [f70] +Uplift Scope [f71] +Uplift Scope [f72] +Uplift Scope [f73] +Uplift Scope [f74] +Uplift Scope [f75] +Uplift Scope [f76] +Uplift Scope [f77] +Uplift Scope [f78] +Uplift Scope [f79] +Uplift Scope [f80] +Uplift Scope [f81] +Uplift Scope [f82] +Uplift Scope [f83] +Uplift Scope [f84] +Uplift Scope [f85] +Uplift Scope [f86] +Uplift Scope [f87] +Uplift Scope [f88] +Uplift Scope [f89] +Uplift Scope [f90] +Uplift Scope [f91] +Uplift Scope [f92] +Uplift Scope [f93] +Uplift Scope [f94] +Uplift Scope [f95] +Uplift Scope [f96] +Uplift Scope [f97] +Uplift Scope [f98] +Uplift Scope [f99] +Uplift Scope [f100] +Uplift Scope [] + +Uplifting [main] best 1557 combination +Uplifting [f1] best 1557 combination +Uplifting [f2] best 1557 combination +Uplifting [f3] best 1557 combination +Uplifting [f4] best 1557 combination +Uplifting [f5] best 1557 combination +Uplifting [f6] best 1557 combination +Uplifting [f7] best 1557 combination +Uplifting [f8] best 1557 combination +Uplifting [f9] best 1557 combination +Uplifting [f10] best 1557 combination +Uplifting [f11] best 1557 combination +Uplifting [f12] best 1557 combination +Uplifting [f13] best 1557 combination +Uplifting [f14] best 1557 combination +Uplifting [f15] best 1557 combination +Uplifting [f16] best 1557 combination +Uplifting [f17] best 1557 combination +Uplifting [f18] best 1557 combination +Uplifting [f19] best 1557 combination +Uplifting [f20] best 1557 combination +Uplifting [f21] best 1557 combination +Uplifting [f22] best 1557 combination +Uplifting [f23] best 1557 combination +Uplifting [f24] best 1557 combination +Uplifting [f25] best 1557 combination +Uplifting [f26] best 1557 combination +Uplifting [f27] best 1557 combination +Uplifting [f28] best 1557 combination +Uplifting [f29] best 1557 combination +Uplifting [f30] best 1557 combination +Uplifting [f31] best 1557 combination +Uplifting [f32] best 1557 combination +Uplifting [f33] best 1557 combination +Uplifting [f34] best 1557 combination +Uplifting [f35] best 1557 combination +Uplifting [f36] best 1557 combination +Uplifting [f37] best 1557 combination +Uplifting [f38] best 1557 combination +Uplifting [f39] best 1557 combination +Uplifting [f40] best 1557 combination +Uplifting [f41] best 1557 combination +Uplifting [f42] best 1557 combination +Uplifting [f43] best 1557 combination +Uplifting [f44] best 1557 combination +Uplifting [f45] best 1557 combination +Uplifting [f46] best 1557 combination +Uplifting [f47] best 1557 combination +Uplifting [f48] best 1557 combination +Uplifting [f49] best 1557 combination +Uplifting [f50] best 1557 combination +Uplifting [f51] best 1557 combination +Uplifting [f52] best 1557 combination +Uplifting [f53] best 1557 combination +Uplifting [f54] best 1557 combination +Uplifting [f55] best 1557 combination +Uplifting [f56] best 1557 combination +Uplifting [f57] best 1557 combination +Uplifting [f58] best 1557 combination +Uplifting [f59] best 1557 combination +Uplifting [f60] best 1557 combination +Uplifting [f61] best 1557 combination +Uplifting [f62] best 1557 combination +Uplifting [f63] best 1557 combination +Uplifting [f64] best 1557 combination +Uplifting [f65] best 1557 combination +Uplifting [f66] best 1557 combination +Uplifting [f67] best 1557 combination +Uplifting [f68] best 1557 combination +Uplifting [f69] best 1557 combination +Uplifting [f70] best 1557 combination +Uplifting [f71] best 1557 combination +Uplifting [f72] best 1557 combination +Uplifting [f73] best 1557 combination +Uplifting [f74] best 1557 combination +Uplifting [f75] best 1557 combination +Uplifting [f76] best 1557 combination +Uplifting [f77] best 1557 combination +Uplifting [f78] best 1557 combination +Uplifting [f79] best 1557 combination +Uplifting [f80] best 1557 combination +Uplifting [f81] best 1557 combination +Uplifting [f82] best 1557 combination +Uplifting [f83] best 1557 combination +Uplifting [f84] best 1557 combination +Uplifting [f85] best 1557 combination +Uplifting [f86] best 1557 combination +Uplifting [f87] best 1557 combination +Uplifting [f88] best 1557 combination +Uplifting [f89] best 1557 combination +Uplifting [f90] best 1557 combination +Uplifting [f91] best 1557 combination +Uplifting [f92] best 1557 combination +Uplifting [f93] best 1557 combination +Uplifting [f94] best 1557 combination +Uplifting [f95] best 1557 combination +Uplifting [f96] best 1557 combination +Uplifting [f97] best 1557 combination +Uplifting [f98] best 1557 combination +Uplifting [f99] best 1557 combination +Uplifting [f100] best 1557 combination +Uplifting [] best 1557 combination + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 File Comments +// Test that the compiler handles deep nesting well -- mainly a performance issue. +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG9 @end +bend: +//SEG10 main +main: { + .label screen = $400 + //SEG11 [5] call f1 + //SEG12 [8] phi from main to f1 [phi:main->f1] + f1_from_main: + jsr f1 + jmp b1 + //SEG13 main::@1 + b1: + //SEG14 [6] *((const byte*) main::screen#0) ← (const byte) f1::return#1 -- _deref_pbuc1=vbuc2 + lda #f1.return + sta screen + jmp breturn + //SEG15 main::@return + breturn: + //SEG16 [7] return + rts +} +//SEG17 f1 +f1: { + .label x = 0 + .label return = f2.return+1 + //SEG18 [9] call f2 + //SEG19 [11] phi from f1 to f2 [phi:f1->f2] + f2_from_f1: + jsr f2 + jmp breturn + //SEG20 f1::@return + breturn: + //SEG21 [10] return + rts +} +//SEG22 f2 +f2: { + .label return = f3.return+1 + //SEG23 [12] call f3 + //SEG24 [14] phi from f2 to f3 [phi:f2->f3] + f3_from_f2: + jsr f3 + jmp breturn + //SEG25 f2::@return + breturn: + //SEG26 [13] return + rts +} +//SEG27 f3 +f3: { + .label return = f4.return+1 + //SEG28 [15] call f4 + //SEG29 [17] phi from f3 to f4 [phi:f3->f4] + f4_from_f3: + jsr f4 + jmp breturn + //SEG30 f3::@return + breturn: + //SEG31 [16] return + rts +} +//SEG32 f4 +f4: { + .label return = f5.return+1 + //SEG33 [18] call f5 + //SEG34 [20] phi from f4 to f5 [phi:f4->f5] + f5_from_f4: + jsr f5 + jmp breturn + //SEG35 f4::@return + breturn: + //SEG36 [19] return + rts +} +//SEG37 f5 +f5: { + .label return = f6.return+1 + //SEG38 [21] call f6 + //SEG39 [23] phi from f5 to f6 [phi:f5->f6] + f6_from_f5: + jsr f6 + jmp breturn + //SEG40 f5::@return + breturn: + //SEG41 [22] return + rts +} +//SEG42 f6 +f6: { + .label return = f7.return+1 + //SEG43 [24] call f7 + //SEG44 [26] phi from f6 to f7 [phi:f6->f7] + f7_from_f6: + jsr f7 + jmp breturn + //SEG45 f6::@return + breturn: + //SEG46 [25] return + rts +} +//SEG47 f7 +f7: { + .label return = f8.return+1 + //SEG48 [27] call f8 + //SEG49 [29] phi from f7 to f8 [phi:f7->f8] + f8_from_f7: + jsr f8 + jmp breturn + //SEG50 f7::@return + breturn: + //SEG51 [28] return + rts +} +//SEG52 f8 +f8: { + .label return = f9.return+1 + //SEG53 [30] call f9 + //SEG54 [32] phi from f8 to f9 [phi:f8->f9] + f9_from_f8: + jsr f9 + jmp breturn + //SEG55 f8::@return + breturn: + //SEG56 [31] return + rts +} +//SEG57 f9 +f9: { + .label return = f10.return+1 + //SEG58 [33] call f10 + //SEG59 [35] phi from f9 to f10 [phi:f9->f10] + f10_from_f9: + jsr f10 + jmp breturn + //SEG60 f9::@return + breturn: + //SEG61 [34] return + rts +} +//SEG62 f10 +f10: { + .label return = f11.return+1 + //SEG63 [36] call f11 + //SEG64 [38] phi from f10 to f11 [phi:f10->f11] + f11_from_f10: + jsr f11 + jmp breturn + //SEG65 f10::@return + breturn: + //SEG66 [37] return + rts +} +//SEG67 f11 +f11: { + .label return = f12.return+1 + //SEG68 [39] call f12 + //SEG69 [41] phi from f11 to f12 [phi:f11->f12] + f12_from_f11: + jsr f12 + jmp breturn + //SEG70 f11::@return + breturn: + //SEG71 [40] return + rts +} +//SEG72 f12 +f12: { + .label return = f13.return+1 + //SEG73 [42] call f13 + //SEG74 [44] phi from f12 to f13 [phi:f12->f13] + f13_from_f12: + jsr f13 + jmp breturn + //SEG75 f12::@return + breturn: + //SEG76 [43] return + rts +} +//SEG77 f13 +f13: { + .label return = f14.return+1 + //SEG78 [45] call f14 + //SEG79 [47] phi from f13 to f14 [phi:f13->f14] + f14_from_f13: + jsr f14 + jmp breturn + //SEG80 f13::@return + breturn: + //SEG81 [46] return + rts +} +//SEG82 f14 +f14: { + .label return = f15.return+1 + //SEG83 [48] call f15 + //SEG84 [50] phi from f14 to f15 [phi:f14->f15] + f15_from_f14: + jsr f15 + jmp breturn + //SEG85 f14::@return + breturn: + //SEG86 [49] return + rts +} +//SEG87 f15 +f15: { + .label return = f16.return+1 + //SEG88 [51] call f16 + //SEG89 [53] phi from f15 to f16 [phi:f15->f16] + f16_from_f15: + jsr f16 + jmp breturn + //SEG90 f15::@return + breturn: + //SEG91 [52] return + rts +} +//SEG92 f16 +f16: { + .label return = f17.return+1 + //SEG93 [54] call f17 + //SEG94 [56] phi from f16 to f17 [phi:f16->f17] + f17_from_f16: + jsr f17 + jmp breturn + //SEG95 f16::@return + breturn: + //SEG96 [55] return + rts +} +//SEG97 f17 +f17: { + .label return = f18.return+1 + //SEG98 [57] call f18 + //SEG99 [59] phi from f17 to f18 [phi:f17->f18] + f18_from_f17: + jsr f18 + jmp breturn + //SEG100 f17::@return + breturn: + //SEG101 [58] return + rts +} +//SEG102 f18 +f18: { + .label return = f19.return+1 + //SEG103 [60] call f19 + //SEG104 [62] phi from f18 to f19 [phi:f18->f19] + f19_from_f18: + jsr f19 + jmp breturn + //SEG105 f18::@return + breturn: + //SEG106 [61] return + rts +} +//SEG107 f19 +f19: { + .label return = f20.return+1 + //SEG108 [63] call f20 + //SEG109 [65] phi from f19 to f20 [phi:f19->f20] + f20_from_f19: + jsr f20 + jmp breturn + //SEG110 f19::@return + breturn: + //SEG111 [64] return + rts +} +//SEG112 f20 +f20: { + .label return = f21.return+1 + //SEG113 [66] call f21 + //SEG114 [68] phi from f20 to f21 [phi:f20->f21] + f21_from_f20: + jsr f21 + jmp breturn + //SEG115 f20::@return + breturn: + //SEG116 [67] return + rts +} +//SEG117 f21 +f21: { + .label return = f22.return+1 + //SEG118 [69] call f22 + //SEG119 [71] phi from f21 to f22 [phi:f21->f22] + f22_from_f21: + jsr f22 + jmp breturn + //SEG120 f21::@return + breturn: + //SEG121 [70] return + rts +} +//SEG122 f22 +f22: { + .label return = f23.return+1 + //SEG123 [72] call f23 + //SEG124 [74] phi from f22 to f23 [phi:f22->f23] + f23_from_f22: + jsr f23 + jmp breturn + //SEG125 f22::@return + breturn: + //SEG126 [73] return + rts +} +//SEG127 f23 +f23: { + .label return = f24.return+1 + //SEG128 [75] call f24 + //SEG129 [77] phi from f23 to f24 [phi:f23->f24] + f24_from_f23: + jsr f24 + jmp breturn + //SEG130 f23::@return + breturn: + //SEG131 [76] return + rts +} +//SEG132 f24 +f24: { + .label return = f25.return+1 + //SEG133 [78] call f25 + //SEG134 [80] phi from f24 to f25 [phi:f24->f25] + f25_from_f24: + jsr f25 + jmp breturn + //SEG135 f24::@return + breturn: + //SEG136 [79] return + rts +} +//SEG137 f25 +f25: { + .label return = f26.return+1 + //SEG138 [81] call f26 + //SEG139 [83] phi from f25 to f26 [phi:f25->f26] + f26_from_f25: + jsr f26 + jmp breturn + //SEG140 f25::@return + breturn: + //SEG141 [82] return + rts +} +//SEG142 f26 +f26: { + .label return = f27.return+1 + //SEG143 [84] call f27 + //SEG144 [86] phi from f26 to f27 [phi:f26->f27] + f27_from_f26: + jsr f27 + jmp breturn + //SEG145 f26::@return + breturn: + //SEG146 [85] return + rts +} +//SEG147 f27 +f27: { + .label return = f28.return+1 + //SEG148 [87] call f28 + //SEG149 [89] phi from f27 to f28 [phi:f27->f28] + f28_from_f27: + jsr f28 + jmp breturn + //SEG150 f27::@return + breturn: + //SEG151 [88] return + rts +} +//SEG152 f28 +f28: { + .label return = f29.return+1 + //SEG153 [90] call f29 + //SEG154 [92] phi from f28 to f29 [phi:f28->f29] + f29_from_f28: + jsr f29 + jmp breturn + //SEG155 f28::@return + breturn: + //SEG156 [91] return + rts +} +//SEG157 f29 +f29: { + .label return = f30.return+1 + //SEG158 [93] call f30 + //SEG159 [95] phi from f29 to f30 [phi:f29->f30] + f30_from_f29: + jsr f30 + jmp breturn + //SEG160 f29::@return + breturn: + //SEG161 [94] return + rts +} +//SEG162 f30 +f30: { + .label return = f31.return+1 + //SEG163 [96] call f31 + //SEG164 [98] phi from f30 to f31 [phi:f30->f31] + f31_from_f30: + jsr f31 + jmp breturn + //SEG165 f30::@return + breturn: + //SEG166 [97] return + rts +} +//SEG167 f31 +f31: { + .label return = f32.return+1 + //SEG168 [99] call f32 + //SEG169 [101] phi from f31 to f32 [phi:f31->f32] + f32_from_f31: + jsr f32 + jmp breturn + //SEG170 f31::@return + breturn: + //SEG171 [100] return + rts +} +//SEG172 f32 +f32: { + .label return = f33.return+1 + //SEG173 [102] call f33 + //SEG174 [104] phi from f32 to f33 [phi:f32->f33] + f33_from_f32: + jsr f33 + jmp breturn + //SEG175 f32::@return + breturn: + //SEG176 [103] return + rts +} +//SEG177 f33 +f33: { + .label return = f34.return+1 + //SEG178 [105] call f34 + //SEG179 [107] phi from f33 to f34 [phi:f33->f34] + f34_from_f33: + jsr f34 + jmp breturn + //SEG180 f33::@return + breturn: + //SEG181 [106] return + rts +} +//SEG182 f34 +f34: { + .label return = f35.return+1 + //SEG183 [108] call f35 + //SEG184 [110] phi from f34 to f35 [phi:f34->f35] + f35_from_f34: + jsr f35 + jmp breturn + //SEG185 f34::@return + breturn: + //SEG186 [109] return + rts +} +//SEG187 f35 +f35: { + .label return = f36.return+1 + //SEG188 [111] call f36 + //SEG189 [113] phi from f35 to f36 [phi:f35->f36] + f36_from_f35: + jsr f36 + jmp breturn + //SEG190 f35::@return + breturn: + //SEG191 [112] return + rts +} +//SEG192 f36 +f36: { + .label return = f37.return+1 + //SEG193 [114] call f37 + //SEG194 [116] phi from f36 to f37 [phi:f36->f37] + f37_from_f36: + jsr f37 + jmp breturn + //SEG195 f36::@return + breturn: + //SEG196 [115] return + rts +} +//SEG197 f37 +f37: { + .label return = f38.return+1 + //SEG198 [117] call f38 + //SEG199 [119] phi from f37 to f38 [phi:f37->f38] + f38_from_f37: + jsr f38 + jmp breturn + //SEG200 f37::@return + breturn: + //SEG201 [118] return + rts +} +//SEG202 f38 +f38: { + .label return = f39.return+1 + //SEG203 [120] call f39 + //SEG204 [122] phi from f38 to f39 [phi:f38->f39] + f39_from_f38: + jsr f39 + jmp breturn + //SEG205 f38::@return + breturn: + //SEG206 [121] return + rts +} +//SEG207 f39 +f39: { + .label return = f40.return+1 + //SEG208 [123] call f40 + //SEG209 [125] phi from f39 to f40 [phi:f39->f40] + f40_from_f39: + jsr f40 + jmp breturn + //SEG210 f39::@return + breturn: + //SEG211 [124] return + rts +} +//SEG212 f40 +f40: { + .label return = f41.return+1 + //SEG213 [126] call f41 + //SEG214 [128] phi from f40 to f41 [phi:f40->f41] + f41_from_f40: + jsr f41 + jmp breturn + //SEG215 f40::@return + breturn: + //SEG216 [127] return + rts +} +//SEG217 f41 +f41: { + .label return = f42.return+1 + //SEG218 [129] call f42 + //SEG219 [131] phi from f41 to f42 [phi:f41->f42] + f42_from_f41: + jsr f42 + jmp breturn + //SEG220 f41::@return + breturn: + //SEG221 [130] return + rts +} +//SEG222 f42 +f42: { + .label return = f43.return+1 + //SEG223 [132] call f43 + //SEG224 [134] phi from f42 to f43 [phi:f42->f43] + f43_from_f42: + jsr f43 + jmp breturn + //SEG225 f42::@return + breturn: + //SEG226 [133] return + rts +} +//SEG227 f43 +f43: { + .label return = f44.return+1 + //SEG228 [135] call f44 + //SEG229 [137] phi from f43 to f44 [phi:f43->f44] + f44_from_f43: + jsr f44 + jmp breturn + //SEG230 f43::@return + breturn: + //SEG231 [136] return + rts +} +//SEG232 f44 +f44: { + .label return = f45.return+1 + //SEG233 [138] call f45 + //SEG234 [140] phi from f44 to f45 [phi:f44->f45] + f45_from_f44: + jsr f45 + jmp breturn + //SEG235 f44::@return + breturn: + //SEG236 [139] return + rts +} +//SEG237 f45 +f45: { + .label return = f46.return+1 + //SEG238 [141] call f46 + //SEG239 [143] phi from f45 to f46 [phi:f45->f46] + f46_from_f45: + jsr f46 + jmp breturn + //SEG240 f45::@return + breturn: + //SEG241 [142] return + rts +} +//SEG242 f46 +f46: { + .label return = f47.return+1 + //SEG243 [144] call f47 + //SEG244 [146] phi from f46 to f47 [phi:f46->f47] + f47_from_f46: + jsr f47 + jmp breturn + //SEG245 f46::@return + breturn: + //SEG246 [145] return + rts +} +//SEG247 f47 +f47: { + .label return = f48.return+1 + //SEG248 [147] call f48 + //SEG249 [149] phi from f47 to f48 [phi:f47->f48] + f48_from_f47: + jsr f48 + jmp breturn + //SEG250 f47::@return + breturn: + //SEG251 [148] return + rts +} +//SEG252 f48 +f48: { + .label return = f49.return+1 + //SEG253 [150] call f49 + //SEG254 [152] phi from f48 to f49 [phi:f48->f49] + f49_from_f48: + jsr f49 + jmp breturn + //SEG255 f48::@return + breturn: + //SEG256 [151] return + rts +} +//SEG257 f49 +f49: { + .label return = f50.return+1 + //SEG258 [153] call f50 + //SEG259 [155] phi from f49 to f50 [phi:f49->f50] + f50_from_f49: + jsr f50 + jmp breturn + //SEG260 f49::@return + breturn: + //SEG261 [154] return + rts +} +//SEG262 f50 +f50: { + .label return = f51.return+1 + //SEG263 [156] call f51 + //SEG264 [158] phi from f50 to f51 [phi:f50->f51] + f51_from_f50: + jsr f51 + jmp breturn + //SEG265 f50::@return + breturn: + //SEG266 [157] return + rts +} +//SEG267 f51 +f51: { + .label return = f52.return+1 + //SEG268 [159] call f52 + //SEG269 [161] phi from f51 to f52 [phi:f51->f52] + f52_from_f51: + jsr f52 + jmp breturn + //SEG270 f51::@return + breturn: + //SEG271 [160] return + rts +} +//SEG272 f52 +f52: { + .label return = f53.return+1 + //SEG273 [162] call f53 + //SEG274 [164] phi from f52 to f53 [phi:f52->f53] + f53_from_f52: + jsr f53 + jmp breturn + //SEG275 f52::@return + breturn: + //SEG276 [163] return + rts +} +//SEG277 f53 +f53: { + .label return = f54.return+1 + //SEG278 [165] call f54 + //SEG279 [167] phi from f53 to f54 [phi:f53->f54] + f54_from_f53: + jsr f54 + jmp breturn + //SEG280 f53::@return + breturn: + //SEG281 [166] return + rts +} +//SEG282 f54 +f54: { + .label return = f55.return+1 + //SEG283 [168] call f55 + //SEG284 [170] phi from f54 to f55 [phi:f54->f55] + f55_from_f54: + jsr f55 + jmp breturn + //SEG285 f54::@return + breturn: + //SEG286 [169] return + rts +} +//SEG287 f55 +f55: { + .label return = f56.return+1 + //SEG288 [171] call f56 + //SEG289 [173] phi from f55 to f56 [phi:f55->f56] + f56_from_f55: + jsr f56 + jmp breturn + //SEG290 f55::@return + breturn: + //SEG291 [172] return + rts +} +//SEG292 f56 +f56: { + .label return = f57.return+1 + //SEG293 [174] call f57 + //SEG294 [176] phi from f56 to f57 [phi:f56->f57] + f57_from_f56: + jsr f57 + jmp breturn + //SEG295 f56::@return + breturn: + //SEG296 [175] return + rts +} +//SEG297 f57 +f57: { + .label return = f58.return+1 + //SEG298 [177] call f58 + //SEG299 [179] phi from f57 to f58 [phi:f57->f58] + f58_from_f57: + jsr f58 + jmp breturn + //SEG300 f57::@return + breturn: + //SEG301 [178] return + rts +} +//SEG302 f58 +f58: { + .label return = f59.return+1 + //SEG303 [180] call f59 + //SEG304 [182] phi from f58 to f59 [phi:f58->f59] + f59_from_f58: + jsr f59 + jmp breturn + //SEG305 f58::@return + breturn: + //SEG306 [181] return + rts +} +//SEG307 f59 +f59: { + .label return = f60.return+1 + //SEG308 [183] call f60 + //SEG309 [185] phi from f59 to f60 [phi:f59->f60] + f60_from_f59: + jsr f60 + jmp breturn + //SEG310 f59::@return + breturn: + //SEG311 [184] return + rts +} +//SEG312 f60 +f60: { + .label return = f61.return+1 + //SEG313 [186] call f61 + //SEG314 [188] phi from f60 to f61 [phi:f60->f61] + f61_from_f60: + jsr f61 + jmp breturn + //SEG315 f60::@return + breturn: + //SEG316 [187] return + rts +} +//SEG317 f61 +f61: { + .label return = f62.return+1 + //SEG318 [189] call f62 + //SEG319 [191] phi from f61 to f62 [phi:f61->f62] + f62_from_f61: + jsr f62 + jmp breturn + //SEG320 f61::@return + breturn: + //SEG321 [190] return + rts +} +//SEG322 f62 +f62: { + .label return = f63.return+1 + //SEG323 [192] call f63 + //SEG324 [194] phi from f62 to f63 [phi:f62->f63] + f63_from_f62: + jsr f63 + jmp breturn + //SEG325 f62::@return + breturn: + //SEG326 [193] return + rts +} +//SEG327 f63 +f63: { + .label return = f64.return+1 + //SEG328 [195] call f64 + //SEG329 [197] phi from f63 to f64 [phi:f63->f64] + f64_from_f63: + jsr f64 + jmp breturn + //SEG330 f63::@return + breturn: + //SEG331 [196] return + rts +} +//SEG332 f64 +f64: { + .label return = f65.return+1 + //SEG333 [198] call f65 + //SEG334 [200] phi from f64 to f65 [phi:f64->f65] + f65_from_f64: + jsr f65 + jmp breturn + //SEG335 f64::@return + breturn: + //SEG336 [199] return + rts +} +//SEG337 f65 +f65: { + .label return = f66.return+1 + //SEG338 [201] call f66 + //SEG339 [203] phi from f65 to f66 [phi:f65->f66] + f66_from_f65: + jsr f66 + jmp breturn + //SEG340 f65::@return + breturn: + //SEG341 [202] return + rts +} +//SEG342 f66 +f66: { + .label return = f67.return+1 + //SEG343 [204] call f67 + //SEG344 [206] phi from f66 to f67 [phi:f66->f67] + f67_from_f66: + jsr f67 + jmp breturn + //SEG345 f66::@return + breturn: + //SEG346 [205] return + rts +} +//SEG347 f67 +f67: { + .label return = f68.return+1 + //SEG348 [207] call f68 + //SEG349 [209] phi from f67 to f68 [phi:f67->f68] + f68_from_f67: + jsr f68 + jmp breturn + //SEG350 f67::@return + breturn: + //SEG351 [208] return + rts +} +//SEG352 f68 +f68: { + .label return = f69.return+1 + //SEG353 [210] call f69 + //SEG354 [212] phi from f68 to f69 [phi:f68->f69] + f69_from_f68: + jsr f69 + jmp breturn + //SEG355 f68::@return + breturn: + //SEG356 [211] return + rts +} +//SEG357 f69 +f69: { + .label return = f70.return+1 + //SEG358 [213] call f70 + //SEG359 [215] phi from f69 to f70 [phi:f69->f70] + f70_from_f69: + jsr f70 + jmp breturn + //SEG360 f69::@return + breturn: + //SEG361 [214] return + rts +} +//SEG362 f70 +f70: { + .label return = f71.return+1 + //SEG363 [216] call f71 + //SEG364 [218] phi from f70 to f71 [phi:f70->f71] + f71_from_f70: + jsr f71 + jmp breturn + //SEG365 f70::@return + breturn: + //SEG366 [217] return + rts +} +//SEG367 f71 +f71: { + .label return = f72.return+1 + //SEG368 [219] call f72 + //SEG369 [221] phi from f71 to f72 [phi:f71->f72] + f72_from_f71: + jsr f72 + jmp breturn + //SEG370 f71::@return + breturn: + //SEG371 [220] return + rts +} +//SEG372 f72 +f72: { + .label return = f73.return+1 + //SEG373 [222] call f73 + //SEG374 [224] phi from f72 to f73 [phi:f72->f73] + f73_from_f72: + jsr f73 + jmp breturn + //SEG375 f72::@return + breturn: + //SEG376 [223] return + rts +} +//SEG377 f73 +f73: { + .label return = f74.return+1 + //SEG378 [225] call f74 + //SEG379 [227] phi from f73 to f74 [phi:f73->f74] + f74_from_f73: + jsr f74 + jmp breturn + //SEG380 f73::@return + breturn: + //SEG381 [226] return + rts +} +//SEG382 f74 +f74: { + .label return = f75.return+1 + //SEG383 [228] call f75 + //SEG384 [230] phi from f74 to f75 [phi:f74->f75] + f75_from_f74: + jsr f75 + jmp breturn + //SEG385 f74::@return + breturn: + //SEG386 [229] return + rts +} +//SEG387 f75 +f75: { + .label return = f76.return+1 + //SEG388 [231] call f76 + //SEG389 [233] phi from f75 to f76 [phi:f75->f76] + f76_from_f75: + jsr f76 + jmp breturn + //SEG390 f75::@return + breturn: + //SEG391 [232] return + rts +} +//SEG392 f76 +f76: { + .label return = f77.return+1 + //SEG393 [234] call f77 + //SEG394 [236] phi from f76 to f77 [phi:f76->f77] + f77_from_f76: + jsr f77 + jmp breturn + //SEG395 f76::@return + breturn: + //SEG396 [235] return + rts +} +//SEG397 f77 +f77: { + .label return = f78.return+1 + //SEG398 [237] call f78 + //SEG399 [239] phi from f77 to f78 [phi:f77->f78] + f78_from_f77: + jsr f78 + jmp breturn + //SEG400 f77::@return + breturn: + //SEG401 [238] return + rts +} +//SEG402 f78 +f78: { + .label return = f79.return+1 + //SEG403 [240] call f79 + //SEG404 [242] phi from f78 to f79 [phi:f78->f79] + f79_from_f78: + jsr f79 + jmp breturn + //SEG405 f78::@return + breturn: + //SEG406 [241] return + rts +} +//SEG407 f79 +f79: { + .label return = f80.return+1 + //SEG408 [243] call f80 + //SEG409 [245] phi from f79 to f80 [phi:f79->f80] + f80_from_f79: + jsr f80 + jmp breturn + //SEG410 f79::@return + breturn: + //SEG411 [244] return + rts +} +//SEG412 f80 +f80: { + .label return = f81.return+1 + //SEG413 [246] call f81 + //SEG414 [248] phi from f80 to f81 [phi:f80->f81] + f81_from_f80: + jsr f81 + jmp breturn + //SEG415 f80::@return + breturn: + //SEG416 [247] return + rts +} +//SEG417 f81 +f81: { + .label return = f82.return+1 + //SEG418 [249] call f82 + //SEG419 [251] phi from f81 to f82 [phi:f81->f82] + f82_from_f81: + jsr f82 + jmp breturn + //SEG420 f81::@return + breturn: + //SEG421 [250] return + rts +} +//SEG422 f82 +f82: { + .label return = f83.return+1 + //SEG423 [252] call f83 + //SEG424 [254] phi from f82 to f83 [phi:f82->f83] + f83_from_f82: + jsr f83 + jmp breturn + //SEG425 f82::@return + breturn: + //SEG426 [253] return + rts +} +//SEG427 f83 +f83: { + .label return = f84.return+1 + //SEG428 [255] call f84 + //SEG429 [257] phi from f83 to f84 [phi:f83->f84] + f84_from_f83: + jsr f84 + jmp breturn + //SEG430 f83::@return + breturn: + //SEG431 [256] return + rts +} +//SEG432 f84 +f84: { + .label return = f85.return+1 + //SEG433 [258] call f85 + //SEG434 [260] phi from f84 to f85 [phi:f84->f85] + f85_from_f84: + jsr f85 + jmp breturn + //SEG435 f84::@return + breturn: + //SEG436 [259] return + rts +} +//SEG437 f85 +f85: { + .label return = f86.return+1 + //SEG438 [261] call f86 + //SEG439 [263] phi from f85 to f86 [phi:f85->f86] + f86_from_f85: + jsr f86 + jmp breturn + //SEG440 f85::@return + breturn: + //SEG441 [262] return + rts +} +//SEG442 f86 +f86: { + .label return = f87.return+1 + //SEG443 [264] call f87 + //SEG444 [266] phi from f86 to f87 [phi:f86->f87] + f87_from_f86: + jsr f87 + jmp breturn + //SEG445 f86::@return + breturn: + //SEG446 [265] return + rts +} +//SEG447 f87 +f87: { + .label return = f88.return+1 + //SEG448 [267] call f88 + //SEG449 [269] phi from f87 to f88 [phi:f87->f88] + f88_from_f87: + jsr f88 + jmp breturn + //SEG450 f87::@return + breturn: + //SEG451 [268] return + rts +} +//SEG452 f88 +f88: { + .label return = f89.return+1 + //SEG453 [270] call f89 + //SEG454 [272] phi from f88 to f89 [phi:f88->f89] + f89_from_f88: + jsr f89 + jmp breturn + //SEG455 f88::@return + breturn: + //SEG456 [271] return + rts +} +//SEG457 f89 +f89: { + .label return = f90.return+1 + //SEG458 [273] call f90 + //SEG459 [275] phi from f89 to f90 [phi:f89->f90] + f90_from_f89: + jsr f90 + jmp breturn + //SEG460 f89::@return + breturn: + //SEG461 [274] return + rts +} +//SEG462 f90 +f90: { + .label return = f91.return+1 + //SEG463 [276] call f91 + //SEG464 [278] phi from f90 to f91 [phi:f90->f91] + f91_from_f90: + jsr f91 + jmp breturn + //SEG465 f90::@return + breturn: + //SEG466 [277] return + rts +} +//SEG467 f91 +f91: { + .label return = f92.return+1 + //SEG468 [279] call f92 + //SEG469 [281] phi from f91 to f92 [phi:f91->f92] + f92_from_f91: + jsr f92 + jmp breturn + //SEG470 f91::@return + breturn: + //SEG471 [280] return + rts +} +//SEG472 f92 +f92: { + .label return = f93.return+1 + //SEG473 [282] call f93 + //SEG474 [284] phi from f92 to f93 [phi:f92->f93] + f93_from_f92: + jsr f93 + jmp breturn + //SEG475 f92::@return + breturn: + //SEG476 [283] return + rts +} +//SEG477 f93 +f93: { + .label return = f94.return+1 + //SEG478 [285] call f94 + //SEG479 [287] phi from f93 to f94 [phi:f93->f94] + f94_from_f93: + jsr f94 + jmp breturn + //SEG480 f93::@return + breturn: + //SEG481 [286] return + rts +} +//SEG482 f94 +f94: { + .label return = f95.return+1 + //SEG483 [288] call f95 + //SEG484 [290] phi from f94 to f95 [phi:f94->f95] + f95_from_f94: + jsr f95 + jmp breturn + //SEG485 f94::@return + breturn: + //SEG486 [289] return + rts +} +//SEG487 f95 +f95: { + .label return = f96.return+1 + //SEG488 [291] call f96 + //SEG489 [293] phi from f95 to f96 [phi:f95->f96] + f96_from_f95: + jsr f96 + jmp breturn + //SEG490 f95::@return + breturn: + //SEG491 [292] return + rts +} +//SEG492 f96 +f96: { + .label return = f97.return+1 + //SEG493 [294] call f97 + //SEG494 [296] phi from f96 to f97 [phi:f96->f97] + f97_from_f96: + jsr f97 + jmp breturn + //SEG495 f96::@return + breturn: + //SEG496 [295] return + rts +} +//SEG497 f97 +f97: { + .label return = f98.return+1 + //SEG498 [297] call f98 + //SEG499 [299] phi from f97 to f98 [phi:f97->f98] + f98_from_f97: + jsr f98 + jmp breturn + //SEG500 f97::@return + breturn: + //SEG501 [298] return + rts +} +//SEG502 f98 +f98: { + .label return = f99.return+1 + //SEG503 [300] call f99 + //SEG504 [302] phi from f98 to f99 [phi:f98->f99] + f99_from_f98: + jsr f99 + jmp breturn + //SEG505 f98::@return + breturn: + //SEG506 [301] return + rts +} +//SEG507 f99 +f99: { + .label return = f1.x+1 + //SEG508 [303] call f100 + //SEG509 [305] phi from f99 to f100 [phi:f99->f100] + f100_from_f99: + jsr f100 + jmp breturn + //SEG510 f99::@return + breturn: + //SEG511 [304] return + rts +} +//SEG512 f100 +f100: { + jmp breturn + //SEG513 f100::@return + breturn: + //SEG514 [306] return + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +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: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction f1_from_main: +Removing instruction b1: +Removing instruction breturn: +Removing instruction f2_from_f1: +Removing instruction breturn: +Removing instruction f3_from_f2: +Removing instruction breturn: +Removing instruction f4_from_f3: +Removing instruction breturn: +Removing instruction f5_from_f4: +Removing instruction breturn: +Removing instruction f6_from_f5: +Removing instruction breturn: +Removing instruction f7_from_f6: +Removing instruction breturn: +Removing instruction f8_from_f7: +Removing instruction breturn: +Removing instruction f9_from_f8: +Removing instruction breturn: +Removing instruction f10_from_f9: +Removing instruction breturn: +Removing instruction f11_from_f10: +Removing instruction breturn: +Removing instruction f12_from_f11: +Removing instruction breturn: +Removing instruction f13_from_f12: +Removing instruction breturn: +Removing instruction f14_from_f13: +Removing instruction breturn: +Removing instruction f15_from_f14: +Removing instruction breturn: +Removing instruction f16_from_f15: +Removing instruction breturn: +Removing instruction f17_from_f16: +Removing instruction breturn: +Removing instruction f18_from_f17: +Removing instruction breturn: +Removing instruction f19_from_f18: +Removing instruction breturn: +Removing instruction f20_from_f19: +Removing instruction breturn: +Removing instruction f21_from_f20: +Removing instruction breturn: +Removing instruction f22_from_f21: +Removing instruction breturn: +Removing instruction f23_from_f22: +Removing instruction breturn: +Removing instruction f24_from_f23: +Removing instruction breturn: +Removing instruction f25_from_f24: +Removing instruction breturn: +Removing instruction f26_from_f25: +Removing instruction breturn: +Removing instruction f27_from_f26: +Removing instruction breturn: +Removing instruction f28_from_f27: +Removing instruction breturn: +Removing instruction f29_from_f28: +Removing instruction breturn: +Removing instruction f30_from_f29: +Removing instruction breturn: +Removing instruction f31_from_f30: +Removing instruction breturn: +Removing instruction f32_from_f31: +Removing instruction breturn: +Removing instruction f33_from_f32: +Removing instruction breturn: +Removing instruction f34_from_f33: +Removing instruction breturn: +Removing instruction f35_from_f34: +Removing instruction breturn: +Removing instruction f36_from_f35: +Removing instruction breturn: +Removing instruction f37_from_f36: +Removing instruction breturn: +Removing instruction f38_from_f37: +Removing instruction breturn: +Removing instruction f39_from_f38: +Removing instruction breturn: +Removing instruction f40_from_f39: +Removing instruction breturn: +Removing instruction f41_from_f40: +Removing instruction breturn: +Removing instruction f42_from_f41: +Removing instruction breturn: +Removing instruction f43_from_f42: +Removing instruction breturn: +Removing instruction f44_from_f43: +Removing instruction breturn: +Removing instruction f45_from_f44: +Removing instruction breturn: +Removing instruction f46_from_f45: +Removing instruction breturn: +Removing instruction f47_from_f46: +Removing instruction breturn: +Removing instruction f48_from_f47: +Removing instruction breturn: +Removing instruction f49_from_f48: +Removing instruction breturn: +Removing instruction f50_from_f49: +Removing instruction breturn: +Removing instruction f51_from_f50: +Removing instruction breturn: +Removing instruction f52_from_f51: +Removing instruction breturn: +Removing instruction f53_from_f52: +Removing instruction breturn: +Removing instruction f54_from_f53: +Removing instruction breturn: +Removing instruction f55_from_f54: +Removing instruction breturn: +Removing instruction f56_from_f55: +Removing instruction breturn: +Removing instruction f57_from_f56: +Removing instruction breturn: +Removing instruction f58_from_f57: +Removing instruction breturn: +Removing instruction f59_from_f58: +Removing instruction breturn: +Removing instruction f60_from_f59: +Removing instruction breturn: +Removing instruction f61_from_f60: +Removing instruction breturn: +Removing instruction f62_from_f61: +Removing instruction breturn: +Removing instruction f63_from_f62: +Removing instruction breturn: +Removing instruction f64_from_f63: +Removing instruction breturn: +Removing instruction f65_from_f64: +Removing instruction breturn: +Removing instruction f66_from_f65: +Removing instruction breturn: +Removing instruction f67_from_f66: +Removing instruction breturn: +Removing instruction f68_from_f67: +Removing instruction breturn: +Removing instruction f69_from_f68: +Removing instruction breturn: +Removing instruction f70_from_f69: +Removing instruction breturn: +Removing instruction f71_from_f70: +Removing instruction breturn: +Removing instruction f72_from_f71: +Removing instruction breturn: +Removing instruction f73_from_f72: +Removing instruction breturn: +Removing instruction f74_from_f73: +Removing instruction breturn: +Removing instruction f75_from_f74: +Removing instruction breturn: +Removing instruction f76_from_f75: +Removing instruction breturn: +Removing instruction f77_from_f76: +Removing instruction breturn: +Removing instruction f78_from_f77: +Removing instruction breturn: +Removing instruction f79_from_f78: +Removing instruction breturn: +Removing instruction f80_from_f79: +Removing instruction breturn: +Removing instruction f81_from_f80: +Removing instruction breturn: +Removing instruction f82_from_f81: +Removing instruction breturn: +Removing instruction f83_from_f82: +Removing instruction breturn: +Removing instruction f84_from_f83: +Removing instruction breturn: +Removing instruction f85_from_f84: +Removing instruction breturn: +Removing instruction f86_from_f85: +Removing instruction breturn: +Removing instruction f87_from_f86: +Removing instruction breturn: +Removing instruction f88_from_f87: +Removing instruction breturn: +Removing instruction f89_from_f88: +Removing instruction breturn: +Removing instruction f90_from_f89: +Removing instruction breturn: +Removing instruction f91_from_f90: +Removing instruction breturn: +Removing instruction f92_from_f91: +Removing instruction breturn: +Removing instruction f93_from_f92: +Removing instruction breturn: +Removing instruction f94_from_f93: +Removing instruction breturn: +Removing instruction f95_from_f94: +Removing instruction breturn: +Removing instruction f96_from_f95: +Removing instruction breturn: +Removing instruction f97_from_f96: +Removing instruction breturn: +Removing instruction f98_from_f97: +Removing instruction breturn: +Removing instruction f99_from_f98: +Removing instruction breturn: +Removing instruction f100_from_f99: +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 +(byte()) f1((byte) f1::x) +(label) f1::@return +(byte) f1::return +(const byte) f1::return#1 return = (const byte) f2::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f1::x +(const byte) f1::x#0 x = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte()) f10((byte) f10::x) +(label) f10::@return +(byte) f10::return +(const byte) f10::return#1 return = (const byte) f11::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f10::x +(byte()) f100((byte) f100::x) +(label) f100::@return +(byte) f100::return +(byte) f100::x +(byte()) f11((byte) f11::x) +(label) f11::@return +(byte) f11::return +(const byte) f11::return#1 return = (const byte) f12::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f11::x +(byte()) f12((byte) f12::x) +(label) f12::@return +(byte) f12::return +(const byte) f12::return#1 return = (const byte) f13::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f12::x +(byte()) f13((byte) f13::x) +(label) f13::@return +(byte) f13::return +(const byte) f13::return#1 return = (const byte) f14::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f13::x +(byte()) f14((byte) f14::x) +(label) f14::@return +(byte) f14::return +(const byte) f14::return#1 return = (const byte) f15::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f14::x +(byte()) f15((byte) f15::x) +(label) f15::@return +(byte) f15::return +(const byte) f15::return#1 return = (const byte) f16::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f15::x +(byte()) f16((byte) f16::x) +(label) f16::@return +(byte) f16::return +(const byte) f16::return#1 return = (const byte) f17::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f16::x +(byte()) f17((byte) f17::x) +(label) f17::@return +(byte) f17::return +(const byte) f17::return#1 return = (const byte) f18::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f17::x +(byte()) f18((byte) f18::x) +(label) f18::@return +(byte) f18::return +(const byte) f18::return#1 return = (const byte) f19::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f18::x +(byte()) f19((byte) f19::x) +(label) f19::@return +(byte) f19::return +(const byte) f19::return#1 return = (const byte) f20::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f19::x +(byte()) f2((byte) f2::x) +(label) f2::@return +(byte) f2::return +(const byte) f2::return#1 return = (const byte) f3::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f2::x +(byte()) f20((byte) f20::x) +(label) f20::@return +(byte) f20::return +(const byte) f20::return#1 return = (const byte) f21::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f20::x +(byte()) f21((byte) f21::x) +(label) f21::@return +(byte) f21::return +(const byte) f21::return#1 return = (const byte) f22::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f21::x +(byte()) f22((byte) f22::x) +(label) f22::@return +(byte) f22::return +(const byte) f22::return#1 return = (const byte) f23::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f22::x +(byte()) f23((byte) f23::x) +(label) f23::@return +(byte) f23::return +(const byte) f23::return#1 return = (const byte) f24::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f23::x +(byte()) f24((byte) f24::x) +(label) f24::@return +(byte) f24::return +(const byte) f24::return#1 return = (const byte) f25::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f24::x +(byte()) f25((byte) f25::x) +(label) f25::@return +(byte) f25::return +(const byte) f25::return#1 return = (const byte) f26::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f25::x +(byte()) f26((byte) f26::x) +(label) f26::@return +(byte) f26::return +(const byte) f26::return#1 return = (const byte) f27::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f26::x +(byte()) f27((byte) f27::x) +(label) f27::@return +(byte) f27::return +(const byte) f27::return#1 return = (const byte) f28::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f27::x +(byte()) f28((byte) f28::x) +(label) f28::@return +(byte) f28::return +(const byte) f28::return#1 return = (const byte) f29::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f28::x +(byte()) f29((byte) f29::x) +(label) f29::@return +(byte) f29::return +(const byte) f29::return#1 return = (const byte) f30::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f29::x +(byte()) f3((byte) f3::x) +(label) f3::@return +(byte) f3::return +(const byte) f3::return#1 return = (const byte) f4::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f3::x +(byte()) f30((byte) f30::x) +(label) f30::@return +(byte) f30::return +(const byte) f30::return#1 return = (const byte) f31::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f30::x +(byte()) f31((byte) f31::x) +(label) f31::@return +(byte) f31::return +(const byte) f31::return#1 return = (const byte) f32::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f31::x +(byte()) f32((byte) f32::x) +(label) f32::@return +(byte) f32::return +(const byte) f32::return#1 return = (const byte) f33::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f32::x +(byte()) f33((byte) f33::x) +(label) f33::@return +(byte) f33::return +(const byte) f33::return#1 return = (const byte) f34::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f33::x +(byte()) f34((byte) f34::x) +(label) f34::@return +(byte) f34::return +(const byte) f34::return#1 return = (const byte) f35::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f34::x +(byte()) f35((byte) f35::x) +(label) f35::@return +(byte) f35::return +(const byte) f35::return#1 return = (const byte) f36::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f35::x +(byte()) f36((byte) f36::x) +(label) f36::@return +(byte) f36::return +(const byte) f36::return#1 return = (const byte) f37::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f36::x +(byte()) f37((byte) f37::x) +(label) f37::@return +(byte) f37::return +(const byte) f37::return#1 return = (const byte) f38::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f37::x +(byte()) f38((byte) f38::x) +(label) f38::@return +(byte) f38::return +(const byte) f38::return#1 return = (const byte) f39::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f38::x +(byte()) f39((byte) f39::x) +(label) f39::@return +(byte) f39::return +(const byte) f39::return#1 return = (const byte) f40::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f39::x +(byte()) f4((byte) f4::x) +(label) f4::@return +(byte) f4::return +(const byte) f4::return#1 return = (const byte) f5::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f4::x +(byte()) f40((byte) f40::x) +(label) f40::@return +(byte) f40::return +(const byte) f40::return#1 return = (const byte) f41::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f40::x +(byte()) f41((byte) f41::x) +(label) f41::@return +(byte) f41::return +(const byte) f41::return#1 return = (const byte) f42::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f41::x +(byte()) f42((byte) f42::x) +(label) f42::@return +(byte) f42::return +(const byte) f42::return#1 return = (const byte) f43::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f42::x +(byte()) f43((byte) f43::x) +(label) f43::@return +(byte) f43::return +(const byte) f43::return#1 return = (const byte) f44::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f43::x +(byte()) f44((byte) f44::x) +(label) f44::@return +(byte) f44::return +(const byte) f44::return#1 return = (const byte) f45::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f44::x +(byte()) f45((byte) f45::x) +(label) f45::@return +(byte) f45::return +(const byte) f45::return#1 return = (const byte) f46::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f45::x +(byte()) f46((byte) f46::x) +(label) f46::@return +(byte) f46::return +(const byte) f46::return#1 return = (const byte) f47::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f46::x +(byte()) f47((byte) f47::x) +(label) f47::@return +(byte) f47::return +(const byte) f47::return#1 return = (const byte) f48::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f47::x +(byte()) f48((byte) f48::x) +(label) f48::@return +(byte) f48::return +(const byte) f48::return#1 return = (const byte) f49::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f48::x +(byte()) f49((byte) f49::x) +(label) f49::@return +(byte) f49::return +(const byte) f49::return#1 return = (const byte) f50::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f49::x +(byte()) f5((byte) f5::x) +(label) f5::@return +(byte) f5::return +(const byte) f5::return#1 return = (const byte) f6::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f5::x +(byte()) f50((byte) f50::x) +(label) f50::@return +(byte) f50::return +(const byte) f50::return#1 return = (const byte) f51::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f50::x +(byte()) f51((byte) f51::x) +(label) f51::@return +(byte) f51::return +(const byte) f51::return#1 return = (const byte) f52::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f51::x +(byte()) f52((byte) f52::x) +(label) f52::@return +(byte) f52::return +(const byte) f52::return#1 return = (const byte) f53::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f52::x +(byte()) f53((byte) f53::x) +(label) f53::@return +(byte) f53::return +(const byte) f53::return#1 return = (const byte) f54::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f53::x +(byte()) f54((byte) f54::x) +(label) f54::@return +(byte) f54::return +(const byte) f54::return#1 return = (const byte) f55::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f54::x +(byte()) f55((byte) f55::x) +(label) f55::@return +(byte) f55::return +(const byte) f55::return#1 return = (const byte) f56::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f55::x +(byte()) f56((byte) f56::x) +(label) f56::@return +(byte) f56::return +(const byte) f56::return#1 return = (const byte) f57::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f56::x +(byte()) f57((byte) f57::x) +(label) f57::@return +(byte) f57::return +(const byte) f57::return#1 return = (const byte) f58::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f57::x +(byte()) f58((byte) f58::x) +(label) f58::@return +(byte) f58::return +(const byte) f58::return#1 return = (const byte) f59::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f58::x +(byte()) f59((byte) f59::x) +(label) f59::@return +(byte) f59::return +(const byte) f59::return#1 return = (const byte) f60::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f59::x +(byte()) f6((byte) f6::x) +(label) f6::@return +(byte) f6::return +(const byte) f6::return#1 return = (const byte) f7::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f6::x +(byte()) f60((byte) f60::x) +(label) f60::@return +(byte) f60::return +(const byte) f60::return#1 return = (const byte) f61::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f60::x +(byte()) f61((byte) f61::x) +(label) f61::@return +(byte) f61::return +(const byte) f61::return#1 return = (const byte) f62::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f61::x +(byte()) f62((byte) f62::x) +(label) f62::@return +(byte) f62::return +(const byte) f62::return#1 return = (const byte) f63::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f62::x +(byte()) f63((byte) f63::x) +(label) f63::@return +(byte) f63::return +(const byte) f63::return#1 return = (const byte) f64::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f63::x +(byte()) f64((byte) f64::x) +(label) f64::@return +(byte) f64::return +(const byte) f64::return#1 return = (const byte) f65::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f64::x +(byte()) f65((byte) f65::x) +(label) f65::@return +(byte) f65::return +(const byte) f65::return#1 return = (const byte) f66::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f65::x +(byte()) f66((byte) f66::x) +(label) f66::@return +(byte) f66::return +(const byte) f66::return#1 return = (const byte) f67::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f66::x +(byte()) f67((byte) f67::x) +(label) f67::@return +(byte) f67::return +(const byte) f67::return#1 return = (const byte) f68::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f67::x +(byte()) f68((byte) f68::x) +(label) f68::@return +(byte) f68::return +(const byte) f68::return#1 return = (const byte) f69::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f68::x +(byte()) f69((byte) f69::x) +(label) f69::@return +(byte) f69::return +(const byte) f69::return#1 return = (const byte) f70::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f69::x +(byte()) f7((byte) f7::x) +(label) f7::@return +(byte) f7::return +(const byte) f7::return#1 return = (const byte) f8::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f7::x +(byte()) f70((byte) f70::x) +(label) f70::@return +(byte) f70::return +(const byte) f70::return#1 return = (const byte) f71::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f70::x +(byte()) f71((byte) f71::x) +(label) f71::@return +(byte) f71::return +(const byte) f71::return#1 return = (const byte) f72::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f71::x +(byte()) f72((byte) f72::x) +(label) f72::@return +(byte) f72::return +(const byte) f72::return#1 return = (const byte) f73::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f72::x +(byte()) f73((byte) f73::x) +(label) f73::@return +(byte) f73::return +(const byte) f73::return#1 return = (const byte) f74::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f73::x +(byte()) f74((byte) f74::x) +(label) f74::@return +(byte) f74::return +(const byte) f74::return#1 return = (const byte) f75::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f74::x +(byte()) f75((byte) f75::x) +(label) f75::@return +(byte) f75::return +(const byte) f75::return#1 return = (const byte) f76::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f75::x +(byte()) f76((byte) f76::x) +(label) f76::@return +(byte) f76::return +(const byte) f76::return#1 return = (const byte) f77::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f76::x +(byte()) f77((byte) f77::x) +(label) f77::@return +(byte) f77::return +(const byte) f77::return#1 return = (const byte) f78::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f77::x +(byte()) f78((byte) f78::x) +(label) f78::@return +(byte) f78::return +(const byte) f78::return#1 return = (const byte) f79::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f78::x +(byte()) f79((byte) f79::x) +(label) f79::@return +(byte) f79::return +(const byte) f79::return#1 return = (const byte) f80::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f79::x +(byte()) f8((byte) f8::x) +(label) f8::@return +(byte) f8::return +(const byte) f8::return#1 return = (const byte) f9::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f8::x +(byte()) f80((byte) f80::x) +(label) f80::@return +(byte) f80::return +(const byte) f80::return#1 return = (const byte) f81::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f80::x +(byte()) f81((byte) f81::x) +(label) f81::@return +(byte) f81::return +(const byte) f81::return#1 return = (const byte) f82::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f81::x +(byte()) f82((byte) f82::x) +(label) f82::@return +(byte) f82::return +(const byte) f82::return#1 return = (const byte) f83::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f82::x +(byte()) f83((byte) f83::x) +(label) f83::@return +(byte) f83::return +(const byte) f83::return#1 return = (const byte) f84::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f83::x +(byte()) f84((byte) f84::x) +(label) f84::@return +(byte) f84::return +(const byte) f84::return#1 return = (const byte) f85::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f84::x +(byte()) f85((byte) f85::x) +(label) f85::@return +(byte) f85::return +(const byte) f85::return#1 return = (const byte) f86::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f85::x +(byte()) f86((byte) f86::x) +(label) f86::@return +(byte) f86::return +(const byte) f86::return#1 return = (const byte) f87::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f86::x +(byte()) f87((byte) f87::x) +(label) f87::@return +(byte) f87::return +(const byte) f87::return#1 return = (const byte) f88::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f87::x +(byte()) f88((byte) f88::x) +(label) f88::@return +(byte) f88::return +(const byte) f88::return#1 return = (const byte) f89::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f88::x +(byte()) f89((byte) f89::x) +(label) f89::@return +(byte) f89::return +(const byte) f89::return#1 return = (const byte) f90::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f89::x +(byte()) f9((byte) f9::x) +(label) f9::@return +(byte) f9::return +(const byte) f9::return#1 return = (const byte) f10::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f9::x +(byte()) f90((byte) f90::x) +(label) f90::@return +(byte) f90::return +(const byte) f90::return#1 return = (const byte) f91::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f90::x +(byte()) f91((byte) f91::x) +(label) f91::@return +(byte) f91::return +(const byte) f91::return#1 return = (const byte) f92::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f91::x +(byte()) f92((byte) f92::x) +(label) f92::@return +(byte) f92::return +(const byte) f92::return#1 return = (const byte) f93::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f92::x +(byte()) f93((byte) f93::x) +(label) f93::@return +(byte) f93::return +(const byte) f93::return#1 return = (const byte) f94::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f93::x +(byte()) f94((byte) f94::x) +(label) f94::@return +(byte) f94::return +(const byte) f94::return#1 return = (const byte) f95::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f94::x +(byte()) f95((byte) f95::x) +(label) f95::@return +(byte) f95::return +(const byte) f95::return#1 return = (const byte) f96::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f95::x +(byte()) f96((byte) f96::x) +(label) f96::@return +(byte) f96::return +(const byte) f96::return#1 return = (const byte) f97::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f96::x +(byte()) f97((byte) f97::x) +(label) f97::@return +(byte) f97::return +(const byte) f97::return#1 return = (const byte) f98::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f97::x +(byte()) f98((byte) f98::x) +(label) f98::@return +(byte) f98::return +(const byte) f98::return#1 return = (const byte) f99::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f98::x +(byte()) f99((byte) f99::x) +(label) f99::@return +(byte) f99::return +(const byte) f99::return#1 return = (const byte) f1::x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f99::x +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::reverse +(byte*) main::screen +(const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) $400 + + + +FINAL ASSEMBLER +Score: 1212 + +//SEG0 File Comments +// Test that the compiler handles deep nesting well -- mainly a performance issue. +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main +main: { + .label screen = $400 + //SEG11 [5] call f1 + //SEG12 [8] phi from main to f1 [phi:main->f1] + jsr f1 + //SEG13 main::@1 + //SEG14 [6] *((const byte*) main::screen#0) ← (const byte) f1::return#1 -- _deref_pbuc1=vbuc2 + lda #f1.return + sta screen + //SEG15 main::@return + //SEG16 [7] return + rts +} +//SEG17 f1 +f1: { + .label x = 0 + .label return = f2.return+1 + //SEG18 [9] call f2 + //SEG19 [11] phi from f1 to f2 [phi:f1->f2] + jsr f2 + //SEG20 f1::@return + //SEG21 [10] return + rts +} +//SEG22 f2 +f2: { + .label return = f3.return+1 + //SEG23 [12] call f3 + //SEG24 [14] phi from f2 to f3 [phi:f2->f3] + jsr f3 + //SEG25 f2::@return + //SEG26 [13] return + rts +} +//SEG27 f3 +f3: { + .label return = f4.return+1 + //SEG28 [15] call f4 + //SEG29 [17] phi from f3 to f4 [phi:f3->f4] + jsr f4 + //SEG30 f3::@return + //SEG31 [16] return + rts +} +//SEG32 f4 +f4: { + .label return = f5.return+1 + //SEG33 [18] call f5 + //SEG34 [20] phi from f4 to f5 [phi:f4->f5] + jsr f5 + //SEG35 f4::@return + //SEG36 [19] return + rts +} +//SEG37 f5 +f5: { + .label return = f6.return+1 + //SEG38 [21] call f6 + //SEG39 [23] phi from f5 to f6 [phi:f5->f6] + jsr f6 + //SEG40 f5::@return + //SEG41 [22] return + rts +} +//SEG42 f6 +f6: { + .label return = f7.return+1 + //SEG43 [24] call f7 + //SEG44 [26] phi from f6 to f7 [phi:f6->f7] + jsr f7 + //SEG45 f6::@return + //SEG46 [25] return + rts +} +//SEG47 f7 +f7: { + .label return = f8.return+1 + //SEG48 [27] call f8 + //SEG49 [29] phi from f7 to f8 [phi:f7->f8] + jsr f8 + //SEG50 f7::@return + //SEG51 [28] return + rts +} +//SEG52 f8 +f8: { + .label return = f9.return+1 + //SEG53 [30] call f9 + //SEG54 [32] phi from f8 to f9 [phi:f8->f9] + jsr f9 + //SEG55 f8::@return + //SEG56 [31] return + rts +} +//SEG57 f9 +f9: { + .label return = f10.return+1 + //SEG58 [33] call f10 + //SEG59 [35] phi from f9 to f10 [phi:f9->f10] + jsr f10 + //SEG60 f9::@return + //SEG61 [34] return + rts +} +//SEG62 f10 +f10: { + .label return = f11.return+1 + //SEG63 [36] call f11 + //SEG64 [38] phi from f10 to f11 [phi:f10->f11] + jsr f11 + //SEG65 f10::@return + //SEG66 [37] return + rts +} +//SEG67 f11 +f11: { + .label return = f12.return+1 + //SEG68 [39] call f12 + //SEG69 [41] phi from f11 to f12 [phi:f11->f12] + jsr f12 + //SEG70 f11::@return + //SEG71 [40] return + rts +} +//SEG72 f12 +f12: { + .label return = f13.return+1 + //SEG73 [42] call f13 + //SEG74 [44] phi from f12 to f13 [phi:f12->f13] + jsr f13 + //SEG75 f12::@return + //SEG76 [43] return + rts +} +//SEG77 f13 +f13: { + .label return = f14.return+1 + //SEG78 [45] call f14 + //SEG79 [47] phi from f13 to f14 [phi:f13->f14] + jsr f14 + //SEG80 f13::@return + //SEG81 [46] return + rts +} +//SEG82 f14 +f14: { + .label return = f15.return+1 + //SEG83 [48] call f15 + //SEG84 [50] phi from f14 to f15 [phi:f14->f15] + jsr f15 + //SEG85 f14::@return + //SEG86 [49] return + rts +} +//SEG87 f15 +f15: { + .label return = f16.return+1 + //SEG88 [51] call f16 + //SEG89 [53] phi from f15 to f16 [phi:f15->f16] + jsr f16 + //SEG90 f15::@return + //SEG91 [52] return + rts +} +//SEG92 f16 +f16: { + .label return = f17.return+1 + //SEG93 [54] call f17 + //SEG94 [56] phi from f16 to f17 [phi:f16->f17] + jsr f17 + //SEG95 f16::@return + //SEG96 [55] return + rts +} +//SEG97 f17 +f17: { + .label return = f18.return+1 + //SEG98 [57] call f18 + //SEG99 [59] phi from f17 to f18 [phi:f17->f18] + jsr f18 + //SEG100 f17::@return + //SEG101 [58] return + rts +} +//SEG102 f18 +f18: { + .label return = f19.return+1 + //SEG103 [60] call f19 + //SEG104 [62] phi from f18 to f19 [phi:f18->f19] + jsr f19 + //SEG105 f18::@return + //SEG106 [61] return + rts +} +//SEG107 f19 +f19: { + .label return = f20.return+1 + //SEG108 [63] call f20 + //SEG109 [65] phi from f19 to f20 [phi:f19->f20] + jsr f20 + //SEG110 f19::@return + //SEG111 [64] return + rts +} +//SEG112 f20 +f20: { + .label return = f21.return+1 + //SEG113 [66] call f21 + //SEG114 [68] phi from f20 to f21 [phi:f20->f21] + jsr f21 + //SEG115 f20::@return + //SEG116 [67] return + rts +} +//SEG117 f21 +f21: { + .label return = f22.return+1 + //SEG118 [69] call f22 + //SEG119 [71] phi from f21 to f22 [phi:f21->f22] + jsr f22 + //SEG120 f21::@return + //SEG121 [70] return + rts +} +//SEG122 f22 +f22: { + .label return = f23.return+1 + //SEG123 [72] call f23 + //SEG124 [74] phi from f22 to f23 [phi:f22->f23] + jsr f23 + //SEG125 f22::@return + //SEG126 [73] return + rts +} +//SEG127 f23 +f23: { + .label return = f24.return+1 + //SEG128 [75] call f24 + //SEG129 [77] phi from f23 to f24 [phi:f23->f24] + jsr f24 + //SEG130 f23::@return + //SEG131 [76] return + rts +} +//SEG132 f24 +f24: { + .label return = f25.return+1 + //SEG133 [78] call f25 + //SEG134 [80] phi from f24 to f25 [phi:f24->f25] + jsr f25 + //SEG135 f24::@return + //SEG136 [79] return + rts +} +//SEG137 f25 +f25: { + .label return = f26.return+1 + //SEG138 [81] call f26 + //SEG139 [83] phi from f25 to f26 [phi:f25->f26] + jsr f26 + //SEG140 f25::@return + //SEG141 [82] return + rts +} +//SEG142 f26 +f26: { + .label return = f27.return+1 + //SEG143 [84] call f27 + //SEG144 [86] phi from f26 to f27 [phi:f26->f27] + jsr f27 + //SEG145 f26::@return + //SEG146 [85] return + rts +} +//SEG147 f27 +f27: { + .label return = f28.return+1 + //SEG148 [87] call f28 + //SEG149 [89] phi from f27 to f28 [phi:f27->f28] + jsr f28 + //SEG150 f27::@return + //SEG151 [88] return + rts +} +//SEG152 f28 +f28: { + .label return = f29.return+1 + //SEG153 [90] call f29 + //SEG154 [92] phi from f28 to f29 [phi:f28->f29] + jsr f29 + //SEG155 f28::@return + //SEG156 [91] return + rts +} +//SEG157 f29 +f29: { + .label return = f30.return+1 + //SEG158 [93] call f30 + //SEG159 [95] phi from f29 to f30 [phi:f29->f30] + jsr f30 + //SEG160 f29::@return + //SEG161 [94] return + rts +} +//SEG162 f30 +f30: { + .label return = f31.return+1 + //SEG163 [96] call f31 + //SEG164 [98] phi from f30 to f31 [phi:f30->f31] + jsr f31 + //SEG165 f30::@return + //SEG166 [97] return + rts +} +//SEG167 f31 +f31: { + .label return = f32.return+1 + //SEG168 [99] call f32 + //SEG169 [101] phi from f31 to f32 [phi:f31->f32] + jsr f32 + //SEG170 f31::@return + //SEG171 [100] return + rts +} +//SEG172 f32 +f32: { + .label return = f33.return+1 + //SEG173 [102] call f33 + //SEG174 [104] phi from f32 to f33 [phi:f32->f33] + jsr f33 + //SEG175 f32::@return + //SEG176 [103] return + rts +} +//SEG177 f33 +f33: { + .label return = f34.return+1 + //SEG178 [105] call f34 + //SEG179 [107] phi from f33 to f34 [phi:f33->f34] + jsr f34 + //SEG180 f33::@return + //SEG181 [106] return + rts +} +//SEG182 f34 +f34: { + .label return = f35.return+1 + //SEG183 [108] call f35 + //SEG184 [110] phi from f34 to f35 [phi:f34->f35] + jsr f35 + //SEG185 f34::@return + //SEG186 [109] return + rts +} +//SEG187 f35 +f35: { + .label return = f36.return+1 + //SEG188 [111] call f36 + //SEG189 [113] phi from f35 to f36 [phi:f35->f36] + jsr f36 + //SEG190 f35::@return + //SEG191 [112] return + rts +} +//SEG192 f36 +f36: { + .label return = f37.return+1 + //SEG193 [114] call f37 + //SEG194 [116] phi from f36 to f37 [phi:f36->f37] + jsr f37 + //SEG195 f36::@return + //SEG196 [115] return + rts +} +//SEG197 f37 +f37: { + .label return = f38.return+1 + //SEG198 [117] call f38 + //SEG199 [119] phi from f37 to f38 [phi:f37->f38] + jsr f38 + //SEG200 f37::@return + //SEG201 [118] return + rts +} +//SEG202 f38 +f38: { + .label return = f39.return+1 + //SEG203 [120] call f39 + //SEG204 [122] phi from f38 to f39 [phi:f38->f39] + jsr f39 + //SEG205 f38::@return + //SEG206 [121] return + rts +} +//SEG207 f39 +f39: { + .label return = f40.return+1 + //SEG208 [123] call f40 + //SEG209 [125] phi from f39 to f40 [phi:f39->f40] + jsr f40 + //SEG210 f39::@return + //SEG211 [124] return + rts +} +//SEG212 f40 +f40: { + .label return = f41.return+1 + //SEG213 [126] call f41 + //SEG214 [128] phi from f40 to f41 [phi:f40->f41] + jsr f41 + //SEG215 f40::@return + //SEG216 [127] return + rts +} +//SEG217 f41 +f41: { + .label return = f42.return+1 + //SEG218 [129] call f42 + //SEG219 [131] phi from f41 to f42 [phi:f41->f42] + jsr f42 + //SEG220 f41::@return + //SEG221 [130] return + rts +} +//SEG222 f42 +f42: { + .label return = f43.return+1 + //SEG223 [132] call f43 + //SEG224 [134] phi from f42 to f43 [phi:f42->f43] + jsr f43 + //SEG225 f42::@return + //SEG226 [133] return + rts +} +//SEG227 f43 +f43: { + .label return = f44.return+1 + //SEG228 [135] call f44 + //SEG229 [137] phi from f43 to f44 [phi:f43->f44] + jsr f44 + //SEG230 f43::@return + //SEG231 [136] return + rts +} +//SEG232 f44 +f44: { + .label return = f45.return+1 + //SEG233 [138] call f45 + //SEG234 [140] phi from f44 to f45 [phi:f44->f45] + jsr f45 + //SEG235 f44::@return + //SEG236 [139] return + rts +} +//SEG237 f45 +f45: { + .label return = f46.return+1 + //SEG238 [141] call f46 + //SEG239 [143] phi from f45 to f46 [phi:f45->f46] + jsr f46 + //SEG240 f45::@return + //SEG241 [142] return + rts +} +//SEG242 f46 +f46: { + .label return = f47.return+1 + //SEG243 [144] call f47 + //SEG244 [146] phi from f46 to f47 [phi:f46->f47] + jsr f47 + //SEG245 f46::@return + //SEG246 [145] return + rts +} +//SEG247 f47 +f47: { + .label return = f48.return+1 + //SEG248 [147] call f48 + //SEG249 [149] phi from f47 to f48 [phi:f47->f48] + jsr f48 + //SEG250 f47::@return + //SEG251 [148] return + rts +} +//SEG252 f48 +f48: { + .label return = f49.return+1 + //SEG253 [150] call f49 + //SEG254 [152] phi from f48 to f49 [phi:f48->f49] + jsr f49 + //SEG255 f48::@return + //SEG256 [151] return + rts +} +//SEG257 f49 +f49: { + .label return = f50.return+1 + //SEG258 [153] call f50 + //SEG259 [155] phi from f49 to f50 [phi:f49->f50] + jsr f50 + //SEG260 f49::@return + //SEG261 [154] return + rts +} +//SEG262 f50 +f50: { + .label return = f51.return+1 + //SEG263 [156] call f51 + //SEG264 [158] phi from f50 to f51 [phi:f50->f51] + jsr f51 + //SEG265 f50::@return + //SEG266 [157] return + rts +} +//SEG267 f51 +f51: { + .label return = f52.return+1 + //SEG268 [159] call f52 + //SEG269 [161] phi from f51 to f52 [phi:f51->f52] + jsr f52 + //SEG270 f51::@return + //SEG271 [160] return + rts +} +//SEG272 f52 +f52: { + .label return = f53.return+1 + //SEG273 [162] call f53 + //SEG274 [164] phi from f52 to f53 [phi:f52->f53] + jsr f53 + //SEG275 f52::@return + //SEG276 [163] return + rts +} +//SEG277 f53 +f53: { + .label return = f54.return+1 + //SEG278 [165] call f54 + //SEG279 [167] phi from f53 to f54 [phi:f53->f54] + jsr f54 + //SEG280 f53::@return + //SEG281 [166] return + rts +} +//SEG282 f54 +f54: { + .label return = f55.return+1 + //SEG283 [168] call f55 + //SEG284 [170] phi from f54 to f55 [phi:f54->f55] + jsr f55 + //SEG285 f54::@return + //SEG286 [169] return + rts +} +//SEG287 f55 +f55: { + .label return = f56.return+1 + //SEG288 [171] call f56 + //SEG289 [173] phi from f55 to f56 [phi:f55->f56] + jsr f56 + //SEG290 f55::@return + //SEG291 [172] return + rts +} +//SEG292 f56 +f56: { + .label return = f57.return+1 + //SEG293 [174] call f57 + //SEG294 [176] phi from f56 to f57 [phi:f56->f57] + jsr f57 + //SEG295 f56::@return + //SEG296 [175] return + rts +} +//SEG297 f57 +f57: { + .label return = f58.return+1 + //SEG298 [177] call f58 + //SEG299 [179] phi from f57 to f58 [phi:f57->f58] + jsr f58 + //SEG300 f57::@return + //SEG301 [178] return + rts +} +//SEG302 f58 +f58: { + .label return = f59.return+1 + //SEG303 [180] call f59 + //SEG304 [182] phi from f58 to f59 [phi:f58->f59] + jsr f59 + //SEG305 f58::@return + //SEG306 [181] return + rts +} +//SEG307 f59 +f59: { + .label return = f60.return+1 + //SEG308 [183] call f60 + //SEG309 [185] phi from f59 to f60 [phi:f59->f60] + jsr f60 + //SEG310 f59::@return + //SEG311 [184] return + rts +} +//SEG312 f60 +f60: { + .label return = f61.return+1 + //SEG313 [186] call f61 + //SEG314 [188] phi from f60 to f61 [phi:f60->f61] + jsr f61 + //SEG315 f60::@return + //SEG316 [187] return + rts +} +//SEG317 f61 +f61: { + .label return = f62.return+1 + //SEG318 [189] call f62 + //SEG319 [191] phi from f61 to f62 [phi:f61->f62] + jsr f62 + //SEG320 f61::@return + //SEG321 [190] return + rts +} +//SEG322 f62 +f62: { + .label return = f63.return+1 + //SEG323 [192] call f63 + //SEG324 [194] phi from f62 to f63 [phi:f62->f63] + jsr f63 + //SEG325 f62::@return + //SEG326 [193] return + rts +} +//SEG327 f63 +f63: { + .label return = f64.return+1 + //SEG328 [195] call f64 + //SEG329 [197] phi from f63 to f64 [phi:f63->f64] + jsr f64 + //SEG330 f63::@return + //SEG331 [196] return + rts +} +//SEG332 f64 +f64: { + .label return = f65.return+1 + //SEG333 [198] call f65 + //SEG334 [200] phi from f64 to f65 [phi:f64->f65] + jsr f65 + //SEG335 f64::@return + //SEG336 [199] return + rts +} +//SEG337 f65 +f65: { + .label return = f66.return+1 + //SEG338 [201] call f66 + //SEG339 [203] phi from f65 to f66 [phi:f65->f66] + jsr f66 + //SEG340 f65::@return + //SEG341 [202] return + rts +} +//SEG342 f66 +f66: { + .label return = f67.return+1 + //SEG343 [204] call f67 + //SEG344 [206] phi from f66 to f67 [phi:f66->f67] + jsr f67 + //SEG345 f66::@return + //SEG346 [205] return + rts +} +//SEG347 f67 +f67: { + .label return = f68.return+1 + //SEG348 [207] call f68 + //SEG349 [209] phi from f67 to f68 [phi:f67->f68] + jsr f68 + //SEG350 f67::@return + //SEG351 [208] return + rts +} +//SEG352 f68 +f68: { + .label return = f69.return+1 + //SEG353 [210] call f69 + //SEG354 [212] phi from f68 to f69 [phi:f68->f69] + jsr f69 + //SEG355 f68::@return + //SEG356 [211] return + rts +} +//SEG357 f69 +f69: { + .label return = f70.return+1 + //SEG358 [213] call f70 + //SEG359 [215] phi from f69 to f70 [phi:f69->f70] + jsr f70 + //SEG360 f69::@return + //SEG361 [214] return + rts +} +//SEG362 f70 +f70: { + .label return = f71.return+1 + //SEG363 [216] call f71 + //SEG364 [218] phi from f70 to f71 [phi:f70->f71] + jsr f71 + //SEG365 f70::@return + //SEG366 [217] return + rts +} +//SEG367 f71 +f71: { + .label return = f72.return+1 + //SEG368 [219] call f72 + //SEG369 [221] phi from f71 to f72 [phi:f71->f72] + jsr f72 + //SEG370 f71::@return + //SEG371 [220] return + rts +} +//SEG372 f72 +f72: { + .label return = f73.return+1 + //SEG373 [222] call f73 + //SEG374 [224] phi from f72 to f73 [phi:f72->f73] + jsr f73 + //SEG375 f72::@return + //SEG376 [223] return + rts +} +//SEG377 f73 +f73: { + .label return = f74.return+1 + //SEG378 [225] call f74 + //SEG379 [227] phi from f73 to f74 [phi:f73->f74] + jsr f74 + //SEG380 f73::@return + //SEG381 [226] return + rts +} +//SEG382 f74 +f74: { + .label return = f75.return+1 + //SEG383 [228] call f75 + //SEG384 [230] phi from f74 to f75 [phi:f74->f75] + jsr f75 + //SEG385 f74::@return + //SEG386 [229] return + rts +} +//SEG387 f75 +f75: { + .label return = f76.return+1 + //SEG388 [231] call f76 + //SEG389 [233] phi from f75 to f76 [phi:f75->f76] + jsr f76 + //SEG390 f75::@return + //SEG391 [232] return + rts +} +//SEG392 f76 +f76: { + .label return = f77.return+1 + //SEG393 [234] call f77 + //SEG394 [236] phi from f76 to f77 [phi:f76->f77] + jsr f77 + //SEG395 f76::@return + //SEG396 [235] return + rts +} +//SEG397 f77 +f77: { + .label return = f78.return+1 + //SEG398 [237] call f78 + //SEG399 [239] phi from f77 to f78 [phi:f77->f78] + jsr f78 + //SEG400 f77::@return + //SEG401 [238] return + rts +} +//SEG402 f78 +f78: { + .label return = f79.return+1 + //SEG403 [240] call f79 + //SEG404 [242] phi from f78 to f79 [phi:f78->f79] + jsr f79 + //SEG405 f78::@return + //SEG406 [241] return + rts +} +//SEG407 f79 +f79: { + .label return = f80.return+1 + //SEG408 [243] call f80 + //SEG409 [245] phi from f79 to f80 [phi:f79->f80] + jsr f80 + //SEG410 f79::@return + //SEG411 [244] return + rts +} +//SEG412 f80 +f80: { + .label return = f81.return+1 + //SEG413 [246] call f81 + //SEG414 [248] phi from f80 to f81 [phi:f80->f81] + jsr f81 + //SEG415 f80::@return + //SEG416 [247] return + rts +} +//SEG417 f81 +f81: { + .label return = f82.return+1 + //SEG418 [249] call f82 + //SEG419 [251] phi from f81 to f82 [phi:f81->f82] + jsr f82 + //SEG420 f81::@return + //SEG421 [250] return + rts +} +//SEG422 f82 +f82: { + .label return = f83.return+1 + //SEG423 [252] call f83 + //SEG424 [254] phi from f82 to f83 [phi:f82->f83] + jsr f83 + //SEG425 f82::@return + //SEG426 [253] return + rts +} +//SEG427 f83 +f83: { + .label return = f84.return+1 + //SEG428 [255] call f84 + //SEG429 [257] phi from f83 to f84 [phi:f83->f84] + jsr f84 + //SEG430 f83::@return + //SEG431 [256] return + rts +} +//SEG432 f84 +f84: { + .label return = f85.return+1 + //SEG433 [258] call f85 + //SEG434 [260] phi from f84 to f85 [phi:f84->f85] + jsr f85 + //SEG435 f84::@return + //SEG436 [259] return + rts +} +//SEG437 f85 +f85: { + .label return = f86.return+1 + //SEG438 [261] call f86 + //SEG439 [263] phi from f85 to f86 [phi:f85->f86] + jsr f86 + //SEG440 f85::@return + //SEG441 [262] return + rts +} +//SEG442 f86 +f86: { + .label return = f87.return+1 + //SEG443 [264] call f87 + //SEG444 [266] phi from f86 to f87 [phi:f86->f87] + jsr f87 + //SEG445 f86::@return + //SEG446 [265] return + rts +} +//SEG447 f87 +f87: { + .label return = f88.return+1 + //SEG448 [267] call f88 + //SEG449 [269] phi from f87 to f88 [phi:f87->f88] + jsr f88 + //SEG450 f87::@return + //SEG451 [268] return + rts +} +//SEG452 f88 +f88: { + .label return = f89.return+1 + //SEG453 [270] call f89 + //SEG454 [272] phi from f88 to f89 [phi:f88->f89] + jsr f89 + //SEG455 f88::@return + //SEG456 [271] return + rts +} +//SEG457 f89 +f89: { + .label return = f90.return+1 + //SEG458 [273] call f90 + //SEG459 [275] phi from f89 to f90 [phi:f89->f90] + jsr f90 + //SEG460 f89::@return + //SEG461 [274] return + rts +} +//SEG462 f90 +f90: { + .label return = f91.return+1 + //SEG463 [276] call f91 + //SEG464 [278] phi from f90 to f91 [phi:f90->f91] + jsr f91 + //SEG465 f90::@return + //SEG466 [277] return + rts +} +//SEG467 f91 +f91: { + .label return = f92.return+1 + //SEG468 [279] call f92 + //SEG469 [281] phi from f91 to f92 [phi:f91->f92] + jsr f92 + //SEG470 f91::@return + //SEG471 [280] return + rts +} +//SEG472 f92 +f92: { + .label return = f93.return+1 + //SEG473 [282] call f93 + //SEG474 [284] phi from f92 to f93 [phi:f92->f93] + jsr f93 + //SEG475 f92::@return + //SEG476 [283] return + rts +} +//SEG477 f93 +f93: { + .label return = f94.return+1 + //SEG478 [285] call f94 + //SEG479 [287] phi from f93 to f94 [phi:f93->f94] + jsr f94 + //SEG480 f93::@return + //SEG481 [286] return + rts +} +//SEG482 f94 +f94: { + .label return = f95.return+1 + //SEG483 [288] call f95 + //SEG484 [290] phi from f94 to f95 [phi:f94->f95] + jsr f95 + //SEG485 f94::@return + //SEG486 [289] return + rts +} +//SEG487 f95 +f95: { + .label return = f96.return+1 + //SEG488 [291] call f96 + //SEG489 [293] phi from f95 to f96 [phi:f95->f96] + jsr f96 + //SEG490 f95::@return + //SEG491 [292] return + rts +} +//SEG492 f96 +f96: { + .label return = f97.return+1 + //SEG493 [294] call f97 + //SEG494 [296] phi from f96 to f97 [phi:f96->f97] + jsr f97 + //SEG495 f96::@return + //SEG496 [295] return + rts +} +//SEG497 f97 +f97: { + .label return = f98.return+1 + //SEG498 [297] call f98 + //SEG499 [299] phi from f97 to f98 [phi:f97->f98] + jsr f98 + //SEG500 f97::@return + //SEG501 [298] return + rts +} +//SEG502 f98 +f98: { + .label return = f99.return+1 + //SEG503 [300] call f99 + //SEG504 [302] phi from f98 to f99 [phi:f98->f99] + jsr f99 + //SEG505 f98::@return + //SEG506 [301] return + rts +} +//SEG507 f99 +f99: { + .label return = f1.x+1 + //SEG508 [303] call f100 + //SEG509 [305] phi from f99 to f100 [phi:f99->f100] + jsr f100 + //SEG510 f99::@return + //SEG511 [304] return + rts +} +//SEG512 f100 +f100: { + //SEG513 f100::@return + //SEG514 [306] return + rts +} + diff --git a/src/test/ref/deep-nesting.sym b/src/test/ref/deep-nesting.sym new file mode 100644 index 000000000..34f7e5984 --- /dev/null +++ b/src/test/ref/deep-nesting.sym @@ -0,0 +1,510 @@ +(label) @1 +(label) @begin +(label) @end +(byte()) f1((byte) f1::x) +(label) f1::@return +(byte) f1::return +(const byte) f1::return#1 return = (const byte) f2::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f1::x +(const byte) f1::x#0 x = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte()) f10((byte) f10::x) +(label) f10::@return +(byte) f10::return +(const byte) f10::return#1 return = (const byte) f11::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f10::x +(byte()) f100((byte) f100::x) +(label) f100::@return +(byte) f100::return +(byte) f100::x +(byte()) f11((byte) f11::x) +(label) f11::@return +(byte) f11::return +(const byte) f11::return#1 return = (const byte) f12::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f11::x +(byte()) f12((byte) f12::x) +(label) f12::@return +(byte) f12::return +(const byte) f12::return#1 return = (const byte) f13::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f12::x +(byte()) f13((byte) f13::x) +(label) f13::@return +(byte) f13::return +(const byte) f13::return#1 return = (const byte) f14::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f13::x +(byte()) f14((byte) f14::x) +(label) f14::@return +(byte) f14::return +(const byte) f14::return#1 return = (const byte) f15::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f14::x +(byte()) f15((byte) f15::x) +(label) f15::@return +(byte) f15::return +(const byte) f15::return#1 return = (const byte) f16::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f15::x +(byte()) f16((byte) f16::x) +(label) f16::@return +(byte) f16::return +(const byte) f16::return#1 return = (const byte) f17::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f16::x +(byte()) f17((byte) f17::x) +(label) f17::@return +(byte) f17::return +(const byte) f17::return#1 return = (const byte) f18::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f17::x +(byte()) f18((byte) f18::x) +(label) f18::@return +(byte) f18::return +(const byte) f18::return#1 return = (const byte) f19::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f18::x +(byte()) f19((byte) f19::x) +(label) f19::@return +(byte) f19::return +(const byte) f19::return#1 return = (const byte) f20::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f19::x +(byte()) f2((byte) f2::x) +(label) f2::@return +(byte) f2::return +(const byte) f2::return#1 return = (const byte) f3::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f2::x +(byte()) f20((byte) f20::x) +(label) f20::@return +(byte) f20::return +(const byte) f20::return#1 return = (const byte) f21::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f20::x +(byte()) f21((byte) f21::x) +(label) f21::@return +(byte) f21::return +(const byte) f21::return#1 return = (const byte) f22::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f21::x +(byte()) f22((byte) f22::x) +(label) f22::@return +(byte) f22::return +(const byte) f22::return#1 return = (const byte) f23::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f22::x +(byte()) f23((byte) f23::x) +(label) f23::@return +(byte) f23::return +(const byte) f23::return#1 return = (const byte) f24::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f23::x +(byte()) f24((byte) f24::x) +(label) f24::@return +(byte) f24::return +(const byte) f24::return#1 return = (const byte) f25::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f24::x +(byte()) f25((byte) f25::x) +(label) f25::@return +(byte) f25::return +(const byte) f25::return#1 return = (const byte) f26::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f25::x +(byte()) f26((byte) f26::x) +(label) f26::@return +(byte) f26::return +(const byte) f26::return#1 return = (const byte) f27::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f26::x +(byte()) f27((byte) f27::x) +(label) f27::@return +(byte) f27::return +(const byte) f27::return#1 return = (const byte) f28::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f27::x +(byte()) f28((byte) f28::x) +(label) f28::@return +(byte) f28::return +(const byte) f28::return#1 return = (const byte) f29::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f28::x +(byte()) f29((byte) f29::x) +(label) f29::@return +(byte) f29::return +(const byte) f29::return#1 return = (const byte) f30::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f29::x +(byte()) f3((byte) f3::x) +(label) f3::@return +(byte) f3::return +(const byte) f3::return#1 return = (const byte) f4::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f3::x +(byte()) f30((byte) f30::x) +(label) f30::@return +(byte) f30::return +(const byte) f30::return#1 return = (const byte) f31::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f30::x +(byte()) f31((byte) f31::x) +(label) f31::@return +(byte) f31::return +(const byte) f31::return#1 return = (const byte) f32::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f31::x +(byte()) f32((byte) f32::x) +(label) f32::@return +(byte) f32::return +(const byte) f32::return#1 return = (const byte) f33::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f32::x +(byte()) f33((byte) f33::x) +(label) f33::@return +(byte) f33::return +(const byte) f33::return#1 return = (const byte) f34::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f33::x +(byte()) f34((byte) f34::x) +(label) f34::@return +(byte) f34::return +(const byte) f34::return#1 return = (const byte) f35::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f34::x +(byte()) f35((byte) f35::x) +(label) f35::@return +(byte) f35::return +(const byte) f35::return#1 return = (const byte) f36::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f35::x +(byte()) f36((byte) f36::x) +(label) f36::@return +(byte) f36::return +(const byte) f36::return#1 return = (const byte) f37::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f36::x +(byte()) f37((byte) f37::x) +(label) f37::@return +(byte) f37::return +(const byte) f37::return#1 return = (const byte) f38::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f37::x +(byte()) f38((byte) f38::x) +(label) f38::@return +(byte) f38::return +(const byte) f38::return#1 return = (const byte) f39::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f38::x +(byte()) f39((byte) f39::x) +(label) f39::@return +(byte) f39::return +(const byte) f39::return#1 return = (const byte) f40::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f39::x +(byte()) f4((byte) f4::x) +(label) f4::@return +(byte) f4::return +(const byte) f4::return#1 return = (const byte) f5::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f4::x +(byte()) f40((byte) f40::x) +(label) f40::@return +(byte) f40::return +(const byte) f40::return#1 return = (const byte) f41::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f40::x +(byte()) f41((byte) f41::x) +(label) f41::@return +(byte) f41::return +(const byte) f41::return#1 return = (const byte) f42::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f41::x +(byte()) f42((byte) f42::x) +(label) f42::@return +(byte) f42::return +(const byte) f42::return#1 return = (const byte) f43::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f42::x +(byte()) f43((byte) f43::x) +(label) f43::@return +(byte) f43::return +(const byte) f43::return#1 return = (const byte) f44::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f43::x +(byte()) f44((byte) f44::x) +(label) f44::@return +(byte) f44::return +(const byte) f44::return#1 return = (const byte) f45::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f44::x +(byte()) f45((byte) f45::x) +(label) f45::@return +(byte) f45::return +(const byte) f45::return#1 return = (const byte) f46::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f45::x +(byte()) f46((byte) f46::x) +(label) f46::@return +(byte) f46::return +(const byte) f46::return#1 return = (const byte) f47::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f46::x +(byte()) f47((byte) f47::x) +(label) f47::@return +(byte) f47::return +(const byte) f47::return#1 return = (const byte) f48::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f47::x +(byte()) f48((byte) f48::x) +(label) f48::@return +(byte) f48::return +(const byte) f48::return#1 return = (const byte) f49::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f48::x +(byte()) f49((byte) f49::x) +(label) f49::@return +(byte) f49::return +(const byte) f49::return#1 return = (const byte) f50::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f49::x +(byte()) f5((byte) f5::x) +(label) f5::@return +(byte) f5::return +(const byte) f5::return#1 return = (const byte) f6::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f5::x +(byte()) f50((byte) f50::x) +(label) f50::@return +(byte) f50::return +(const byte) f50::return#1 return = (const byte) f51::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f50::x +(byte()) f51((byte) f51::x) +(label) f51::@return +(byte) f51::return +(const byte) f51::return#1 return = (const byte) f52::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f51::x +(byte()) f52((byte) f52::x) +(label) f52::@return +(byte) f52::return +(const byte) f52::return#1 return = (const byte) f53::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f52::x +(byte()) f53((byte) f53::x) +(label) f53::@return +(byte) f53::return +(const byte) f53::return#1 return = (const byte) f54::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f53::x +(byte()) f54((byte) f54::x) +(label) f54::@return +(byte) f54::return +(const byte) f54::return#1 return = (const byte) f55::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f54::x +(byte()) f55((byte) f55::x) +(label) f55::@return +(byte) f55::return +(const byte) f55::return#1 return = (const byte) f56::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f55::x +(byte()) f56((byte) f56::x) +(label) f56::@return +(byte) f56::return +(const byte) f56::return#1 return = (const byte) f57::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f56::x +(byte()) f57((byte) f57::x) +(label) f57::@return +(byte) f57::return +(const byte) f57::return#1 return = (const byte) f58::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f57::x +(byte()) f58((byte) f58::x) +(label) f58::@return +(byte) f58::return +(const byte) f58::return#1 return = (const byte) f59::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f58::x +(byte()) f59((byte) f59::x) +(label) f59::@return +(byte) f59::return +(const byte) f59::return#1 return = (const byte) f60::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f59::x +(byte()) f6((byte) f6::x) +(label) f6::@return +(byte) f6::return +(const byte) f6::return#1 return = (const byte) f7::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f6::x +(byte()) f60((byte) f60::x) +(label) f60::@return +(byte) f60::return +(const byte) f60::return#1 return = (const byte) f61::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f60::x +(byte()) f61((byte) f61::x) +(label) f61::@return +(byte) f61::return +(const byte) f61::return#1 return = (const byte) f62::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f61::x +(byte()) f62((byte) f62::x) +(label) f62::@return +(byte) f62::return +(const byte) f62::return#1 return = (const byte) f63::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f62::x +(byte()) f63((byte) f63::x) +(label) f63::@return +(byte) f63::return +(const byte) f63::return#1 return = (const byte) f64::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f63::x +(byte()) f64((byte) f64::x) +(label) f64::@return +(byte) f64::return +(const byte) f64::return#1 return = (const byte) f65::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f64::x +(byte()) f65((byte) f65::x) +(label) f65::@return +(byte) f65::return +(const byte) f65::return#1 return = (const byte) f66::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f65::x +(byte()) f66((byte) f66::x) +(label) f66::@return +(byte) f66::return +(const byte) f66::return#1 return = (const byte) f67::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f66::x +(byte()) f67((byte) f67::x) +(label) f67::@return +(byte) f67::return +(const byte) f67::return#1 return = (const byte) f68::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f67::x +(byte()) f68((byte) f68::x) +(label) f68::@return +(byte) f68::return +(const byte) f68::return#1 return = (const byte) f69::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f68::x +(byte()) f69((byte) f69::x) +(label) f69::@return +(byte) f69::return +(const byte) f69::return#1 return = (const byte) f70::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f69::x +(byte()) f7((byte) f7::x) +(label) f7::@return +(byte) f7::return +(const byte) f7::return#1 return = (const byte) f8::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f7::x +(byte()) f70((byte) f70::x) +(label) f70::@return +(byte) f70::return +(const byte) f70::return#1 return = (const byte) f71::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f70::x +(byte()) f71((byte) f71::x) +(label) f71::@return +(byte) f71::return +(const byte) f71::return#1 return = (const byte) f72::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f71::x +(byte()) f72((byte) f72::x) +(label) f72::@return +(byte) f72::return +(const byte) f72::return#1 return = (const byte) f73::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f72::x +(byte()) f73((byte) f73::x) +(label) f73::@return +(byte) f73::return +(const byte) f73::return#1 return = (const byte) f74::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f73::x +(byte()) f74((byte) f74::x) +(label) f74::@return +(byte) f74::return +(const byte) f74::return#1 return = (const byte) f75::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f74::x +(byte()) f75((byte) f75::x) +(label) f75::@return +(byte) f75::return +(const byte) f75::return#1 return = (const byte) f76::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f75::x +(byte()) f76((byte) f76::x) +(label) f76::@return +(byte) f76::return +(const byte) f76::return#1 return = (const byte) f77::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f76::x +(byte()) f77((byte) f77::x) +(label) f77::@return +(byte) f77::return +(const byte) f77::return#1 return = (const byte) f78::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f77::x +(byte()) f78((byte) f78::x) +(label) f78::@return +(byte) f78::return +(const byte) f78::return#1 return = (const byte) f79::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f78::x +(byte()) f79((byte) f79::x) +(label) f79::@return +(byte) f79::return +(const byte) f79::return#1 return = (const byte) f80::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f79::x +(byte()) f8((byte) f8::x) +(label) f8::@return +(byte) f8::return +(const byte) f8::return#1 return = (const byte) f9::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f8::x +(byte()) f80((byte) f80::x) +(label) f80::@return +(byte) f80::return +(const byte) f80::return#1 return = (const byte) f81::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f80::x +(byte()) f81((byte) f81::x) +(label) f81::@return +(byte) f81::return +(const byte) f81::return#1 return = (const byte) f82::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f81::x +(byte()) f82((byte) f82::x) +(label) f82::@return +(byte) f82::return +(const byte) f82::return#1 return = (const byte) f83::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f82::x +(byte()) f83((byte) f83::x) +(label) f83::@return +(byte) f83::return +(const byte) f83::return#1 return = (const byte) f84::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f83::x +(byte()) f84((byte) f84::x) +(label) f84::@return +(byte) f84::return +(const byte) f84::return#1 return = (const byte) f85::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f84::x +(byte()) f85((byte) f85::x) +(label) f85::@return +(byte) f85::return +(const byte) f85::return#1 return = (const byte) f86::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f85::x +(byte()) f86((byte) f86::x) +(label) f86::@return +(byte) f86::return +(const byte) f86::return#1 return = (const byte) f87::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f86::x +(byte()) f87((byte) f87::x) +(label) f87::@return +(byte) f87::return +(const byte) f87::return#1 return = (const byte) f88::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f87::x +(byte()) f88((byte) f88::x) +(label) f88::@return +(byte) f88::return +(const byte) f88::return#1 return = (const byte) f89::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f88::x +(byte()) f89((byte) f89::x) +(label) f89::@return +(byte) f89::return +(const byte) f89::return#1 return = (const byte) f90::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f89::x +(byte()) f9((byte) f9::x) +(label) f9::@return +(byte) f9::return +(const byte) f9::return#1 return = (const byte) f10::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f9::x +(byte()) f90((byte) f90::x) +(label) f90::@return +(byte) f90::return +(const byte) f90::return#1 return = (const byte) f91::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f90::x +(byte()) f91((byte) f91::x) +(label) f91::@return +(byte) f91::return +(const byte) f91::return#1 return = (const byte) f92::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f91::x +(byte()) f92((byte) f92::x) +(label) f92::@return +(byte) f92::return +(const byte) f92::return#1 return = (const byte) f93::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f92::x +(byte()) f93((byte) f93::x) +(label) f93::@return +(byte) f93::return +(const byte) f93::return#1 return = (const byte) f94::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f93::x +(byte()) f94((byte) f94::x) +(label) f94::@return +(byte) f94::return +(const byte) f94::return#1 return = (const byte) f95::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f94::x +(byte()) f95((byte) f95::x) +(label) f95::@return +(byte) f95::return +(const byte) f95::return#1 return = (const byte) f96::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f95::x +(byte()) f96((byte) f96::x) +(label) f96::@return +(byte) f96::return +(const byte) f96::return#1 return = (const byte) f97::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f96::x +(byte()) f97((byte) f97::x) +(label) f97::@return +(byte) f97::return +(const byte) f97::return#1 return = (const byte) f98::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f97::x +(byte()) f98((byte) f98::x) +(label) f98::@return +(byte) f98::return +(const byte) f98::return#1 return = (const byte) f99::return#1+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f98::x +(byte()) f99((byte) f99::x) +(label) f99::@return +(byte) f99::return +(const byte) f99::return#1 return = (const byte) f1::x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) f99::x +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::reverse +(byte*) main::screen +(const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) $400 + diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.asm b/src/test/ref/examples/bresenham/bitmap-bresenham.asm index a5a9862b2..a5ee012ff 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.asm +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.asm @@ -76,13 +76,12 @@ bitmap_line: { sty bitmap_line_ydxi.y ldx x1 jsr bitmap_line_ydxi - breturn: rts b8: ldx x1 sty bitmap_line_xdyi.y jsr bitmap_line_xdyi - jmp breturn + rts b7: tya sec @@ -95,14 +94,14 @@ bitmap_line: { ldx x0 sty bitmap_line_ydxd.y1 jsr bitmap_line_ydxd - jmp breturn + rts b9: ldx x1 sty bitmap_line_xdyd.y lda x0 sta bitmap_line_xdyd.x1 jsr bitmap_line_xdyd - jmp breturn + rts b1: lda x1 sec @@ -123,11 +122,11 @@ bitmap_line: { sty bitmap_line_ydxd.y ldx x1 jsr bitmap_line_ydxd - jmp breturn + rts b12: ldx x0 jsr bitmap_line_xdyd - jmp breturn + rts b11: tya sec @@ -140,13 +139,13 @@ bitmap_line: { ldx x0 sty bitmap_line_ydxi.y1 jsr bitmap_line_ydxi - jmp breturn + rts b13: ldx x0 lda x1 sta bitmap_line_xdyi.x1 jsr bitmap_line_xdyi - jmp breturn + rts } // bitmap_line_xdyi(byte register(X) x, byte zeropage(6) y, byte zeropage(5) x1, byte zeropage(4) xd, byte zeropage(3) yd) bitmap_line_xdyi: { diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.log b/src/test/ref/examples/bresenham/bitmap-bresenham.log index 110804ffe..755a44029 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.log +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.log @@ -5382,6 +5382,13 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to b2 in bne b6 Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 @@ -5394,6 +5401,7 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda x0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: +Removing instruction breturn: Removing instruction b6: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b2 @@ -5809,7 +5817,7 @@ reg byte a [ bitmap_init::$10 ] FINAL ASSEMBLER -Score: 221023 +Score: 221044 //SEG0 File Comments //SEG1 Basic Upstart @@ -5954,7 +5962,6 @@ bitmap_line: { //SEG63 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@4->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi //SEG64 bitmap_line::@return - breturn: //SEG65 [36] return rts //SEG66 bitmap_line::@8 @@ -5974,7 +5981,7 @@ bitmap_line: { //SEG77 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@8->bitmap_line_xdyi#3] -- register_copy //SEG78 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@8->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi - jmp breturn + rts //SEG79 bitmap_line::@7 b7: //SEG80 [43] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 @@ -6003,7 +6010,7 @@ bitmap_line: { //SEG93 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@10->bitmap_line_ydxd#3] -- register_copy //SEG94 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@10->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd - jmp breturn + rts //SEG95 bitmap_line::@9 b9: //SEG96 [51] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 @@ -6023,7 +6030,7 @@ bitmap_line: { //SEG106 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@9->bitmap_line_xdyd#3] -- register_copy //SEG107 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@9->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd - jmp breturn + rts //SEG108 bitmap_line::@1 b1: //SEG109 [57] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 @@ -6063,7 +6070,7 @@ bitmap_line: { //SEG125 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@6->bitmap_line_ydxd#3] -- register_copy //SEG126 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@6->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd - jmp breturn + rts //SEG127 bitmap_line::@12 b12: //SEG128 [67] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 @@ -6080,7 +6087,7 @@ bitmap_line: { //SEG138 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@12->bitmap_line_xdyd#3] -- register_copy //SEG139 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@12->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd - jmp breturn + rts //SEG140 bitmap_line::@11 b11: //SEG141 [73] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 @@ -6109,7 +6116,7 @@ bitmap_line: { //SEG154 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@14->bitmap_line_ydxi#3] -- register_copy //SEG155 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@14->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi - jmp breturn + rts //SEG156 bitmap_line::@13 b13: //SEG157 [81] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 @@ -6128,7 +6135,7 @@ bitmap_line: { //SEG167 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy //SEG168 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi - jmp breturn + rts } //SEG169 bitmap_line_xdyi // bitmap_line_xdyi(byte register(X) x, byte zeropage(6) y, byte zeropage(5) x1, byte zeropage(4) xd, byte zeropage(3) yd) diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log index f5a801251..e23d5d7ad 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.log +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log @@ -3909,6 +3909,7 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to breturn in bne b5 +Replacing jump to rts with rts in jmp breturn Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b4 Removing instruction jmp b7 @@ -3923,7 +3924,7 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Removing instruction b5: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp breturn +Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.asm b/src/test/ref/examples/scrolllogo/scrolllogo.asm index 37acc5796..529298499 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.asm +++ b/src/test/ref/examples/scrolllogo/scrolllogo.asm @@ -149,7 +149,6 @@ render_logo: { b5: cpy #$28 bne b6 - breturn: rts b6: lda logo_idx @@ -201,7 +200,7 @@ render_logo: { b11: cpy #$28 bne b12 - jmp breturn + rts b12: lda #0 sta SCREEN,y diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log index d09464f0d..d36f0ca2a 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.log +++ b/src/test/ref/examples/scrolllogo/scrolllogo.log @@ -7770,7 +7770,9 @@ Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to b4 in bne b6 Skipping double jump to b4 in bne b6 +Replacing jump to rts with rts in jmp breturn Skipping double jump to b3 in beq b12 +Replacing jump to rts with rts in jmp b3 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_sin16s to b4 Succesful ASM optimization Pass5RelabelLongLabels @@ -7792,10 +7794,11 @@ Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Removing instruction b6: +Removing instruction breturn: Removing instruction b12: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b4 -Removing unreachable instruction jmp b3 +Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE @@ -8272,7 +8275,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 43610 +Score: 43910 //SEG0 File Comments //SEG1 Basic Upstart @@ -8518,7 +8521,6 @@ render_logo: { cpy #$28 bne b6 //SEG92 render_logo::@return - breturn: //SEG93 [49] return rts //SEG94 render_logo::@6 @@ -8622,7 +8624,7 @@ render_logo: { //SEG144 [75] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne b12 - jmp breturn + rts //SEG145 render_logo::@12 b12: //SEG146 [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index c779acc74..26984b341 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -7586,6 +7586,7 @@ Succesful ASM optimization Pass5SkipBegin Skipping double jump to b2 in bne b7 Skipping double jump to b2 in bne b7 Skipping double jump to b3 in beq b12 +Replacing jump to rts with rts in jmp b3 Skipping double jump to b2 in bne b6 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_sin16s to b4 @@ -7607,7 +7608,7 @@ Removing instruction b12: Removing instruction b6: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b2 -Removing unreachable instruction jmp b3 +Removing unreachable instruction rts Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination Fixing long branch [160] bcc b1 to bcs diff --git a/src/test/ref/function-pointer-noarg-call-3.asm b/src/test/ref/function-pointer-noarg-call-3.asm index 349e13ce5..28111714b 100644 --- a/src/test/ref/function-pointer-noarg-call-3.asm +++ b/src/test/ref/function-pointer-noarg-call-3.asm @@ -26,13 +26,12 @@ getfn: { sta return lda #>fn2 sta return+1 - jmp breturn + rts b1: lda #fn1 sta return+1 - breturn: rts } fn2: { diff --git a/src/test/ref/function-pointer-noarg-call-3.log b/src/test/ref/function-pointer-noarg-call-3.log index b94aa32ac..1e8aaf3bd 100644 --- a/src/test/ref/function-pointer-noarg-call-3.log +++ b/src/test/ref/function-pointer-noarg-call-3.log @@ -568,9 +568,12 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label breturn_from_getfn to b1 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -610,7 +613,7 @@ reg byte a [ getfn::$0 ] FINAL ASSEMBLER -Score: 389 +Score: 392 //SEG0 File Comments // Tests creating, assigning returning and calling pointers to non-args no-return functions @@ -671,7 +674,7 @@ getfn: { sta return lda #>fn2 sta return+1 - jmp breturn + rts //SEG31 [15] phi from getfn to getfn::@return [phi:getfn->getfn::@return] b1: //SEG32 [15] phi (void()*) getfn::return#3 = &(void()) fn1() [phi:getfn->getfn::@return#0] -- pprz1=pprc1 @@ -680,7 +683,6 @@ getfn: { lda #>fn1 sta return+1 //SEG33 getfn::@return - breturn: //SEG34 [16] return rts } diff --git a/src/test/ref/keyboard-glitch.asm b/src/test/ref/keyboard-glitch.asm index 1d7197112..e557715bc 100644 --- a/src/test/ref/keyboard-glitch.asm +++ b/src/test/ref/keyboard-glitch.asm @@ -35,7 +35,6 @@ menu: { cmp #0 beq b2 jsr pressed - breturn: rts b2: ldx #KEY_I @@ -45,7 +44,7 @@ menu: { lda #RED sta BORDERCOL sei - jmp breturn + rts b3: ldx #KEY_E jsr keyboard_key_pressed @@ -54,7 +53,7 @@ menu: { lda #GREEN sta BORDERCOL cli - jmp breturn + rts b4: inc SCREEN jmp b1 diff --git a/src/test/ref/keyboard-glitch.log b/src/test/ref/keyboard-glitch.log index 1384c46b8..3f4a93948 100644 --- a/src/test/ref/keyboard-glitch.log +++ b/src/test/ref/keyboard-glitch.log @@ -1961,7 +1961,11 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -2203,7 +2207,7 @@ reg byte a [ pressed::$0 ] FINAL ASSEMBLER -Score: 2845 +Score: 2851 //SEG0 File Comments // Exploring keyboard glitch that finds "C" press when pressing space @@ -2271,7 +2275,6 @@ menu: { //SEG27 [14] call pressed jsr pressed //SEG28 menu::@return - breturn: //SEG29 [15] return rts //SEG30 [16] phi from menu::@8 to menu::@2 [phi:menu::@8->menu::@2] @@ -2294,7 +2297,7 @@ menu: { sta BORDERCOL //SEG41 asm { sei } sei - jmp breturn + rts //SEG42 [23] phi from menu::@9 to menu::@3 [phi:menu::@9->menu::@3] //SEG43 menu::@3 b3: @@ -2315,7 +2318,7 @@ menu: { sta BORDERCOL //SEG53 asm { cli } cli - jmp breturn + rts //SEG54 menu::@4 b4: //SEG55 [30] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 diff --git a/src/test/ref/line-anim.asm b/src/test/ref/line-anim.asm index 3d56fcacd..30163d729 100644 --- a/src/test/ref/line-anim.asm +++ b/src/test/ref/line-anim.asm @@ -323,14 +323,13 @@ divr16s: { eor #$ff adc #0 sta return+1 - breturn: rts b10: lda divr16u.rem sta rem16s lda divr16u.rem+1 sta rem16s+1 - jmp breturn + rts b3: sec lda _13 diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log index 4f663420f..2417e1500 100644 --- a/src/test/ref/line-anim.log +++ b/src/test/ref/line-anim.log @@ -5679,6 +5679,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn Skipping double jump to b2 in bne b6 Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 @@ -5691,6 +5692,7 @@ Removing instruction jmp b1 Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: +Removing instruction breturn: Removing instruction b6: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b2 @@ -6107,7 +6109,7 @@ reg byte a [ bitmap_init::$7 ] FINAL ASSEMBLER -Score: 21644 +Score: 21647 //SEG0 File Comments // Animated lines drawn on a single color bitmap @@ -6588,7 +6590,6 @@ divr16s: { //SEG151 [86] phi (signed word) rem16s#3 = (signed word~) rem16s#57 [phi:divr16s::@10/divr16s::@5->divr16s::@return#0] -- register_copy //SEG152 [86] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@10/divr16s::@5->divr16s::@return#1] -- register_copy //SEG153 divr16s::@return - breturn: //SEG154 [87] return rts //SEG155 divr16s::@10 @@ -6599,7 +6600,7 @@ divr16s: { sta rem16s lda divr16u.rem+1 sta rem16s+1 - jmp breturn + rts //SEG158 divr16s::@3 b3: //SEG159 [90] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 diff --git a/src/test/ref/loop-break-continue.asm b/src/test/ref/loop-break-continue.asm index 497bb9879..1ff20050e 100644 --- a/src/test/ref/loop-break-continue.asm +++ b/src/test/ref/loop-break-continue.asm @@ -14,7 +14,6 @@ main: { lda str,x cmp #'@' bne b2 - breturn: rts b2: lda str,x @@ -24,7 +23,7 @@ main: { inx cpx #0 bne b1 - jmp breturn + rts b3: lda str,x ldy #0 diff --git a/src/test/ref/loop-break-continue.log b/src/test/ref/loop-break-continue.log index 9c84fa171..0513fea28 100644 --- a/src/test/ref/loop-break-continue.log +++ b/src/test/ref/loop-break-continue.log @@ -408,9 +408,12 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -438,7 +441,7 @@ zp ZP_WORD:2 [ main::screen#2 main::screen#5 main::screen#1 ] FINAL ASSEMBLER -Score: 681 +Score: 711 //SEG0 File Comments // Illustrates both break & continue statements in a loop @@ -476,7 +479,6 @@ main: { cmp #'@' bne b2 //SEG19 main::@return - breturn: //SEG20 [7] return rts //SEG21 main::@2 @@ -494,7 +496,7 @@ main: { //SEG27 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - jmp breturn + rts //SEG28 main::@3 b3: //SEG29 [12] *((byte*) main::screen#2) ← *((const byte[]) main::str#0 + (byte) main::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx diff --git a/src/test/ref/loop-break-nested.asm b/src/test/ref/loop-break-nested.asm index 1251fce56..86284b28d 100644 --- a/src/test/ref/loop-break-nested.asm +++ b/src/test/ref/loop-break-nested.asm @@ -13,7 +13,6 @@ main: { lda (line),y cmp #'a' bne b5 - breturn: rts b5: ldy #0 @@ -37,7 +36,7 @@ main: { cmp #<$400+$28*$19 bcc b1 !: - jmp breturn + rts b3: lda #'a' sta (line),y diff --git a/src/test/ref/loop-break-nested.log b/src/test/ref/loop-break-nested.log index e63b69a28..a535a9a3f 100644 --- a/src/test/ref/loop-break-nested.log +++ b/src/test/ref/loop-break-nested.log @@ -452,12 +452,15 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b2_from_b1 to b5 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -483,7 +486,7 @@ reg byte y [ main::i#2 main::i#1 ] FINAL ASSEMBLER -Score: 3556 +Score: 3586 //SEG0 File Comments // Tests break statement in a simple loop @@ -518,7 +521,6 @@ main: { cmp #'a' bne b5 //SEG17 main::@return - breturn: //SEG18 [7] return rts //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -552,7 +554,7 @@ main: { cmp #<$400+$28*$19 bcc b1 !: - jmp breturn + rts //SEG28 main::@3 b3: //SEG29 [12] *((byte*) main::line#2 + (byte) main::i#2) ← (byte) 'a' -- pbuz1_derefidx_vbuyy=vbuc1 diff --git a/src/test/ref/loop-break.asm b/src/test/ref/loop-break.asm index ed80ab78f..e1e305c19 100644 --- a/src/test/ref/loop-break.asm +++ b/src/test/ref/loop-break.asm @@ -9,7 +9,6 @@ main: { lda SCREEN,x cmp #'a' bne b2 - breturn: rts b2: lda #'a' @@ -17,5 +16,5 @@ main: { inx cpx #$28*6+1 bne b1 - jmp breturn + rts } diff --git a/src/test/ref/loop-break.log b/src/test/ref/loop-break.log index b66e0f1ec..cadb2e0e1 100644 --- a/src/test/ref/loop-break.log +++ b/src/test/ref/loop-break.log @@ -286,9 +286,12 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -309,7 +312,7 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER -Score: 281 +Score: 311 //SEG0 File Comments // Tests break statement in a simple loop @@ -340,7 +343,6 @@ main: { cmp #'a' bne b2 //SEG17 main::@return - breturn: //SEG18 [7] return rts //SEG19 main::@2 @@ -353,6 +355,6 @@ main: { //SEG22 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28*6+1 bne b1 - jmp breturn + rts } diff --git a/src/test/ref/no-recursion-heavy.asm b/src/test/ref/no-recursion-heavy.asm index 685dcf3f0..db4486841 100644 --- a/src/test/ref/no-recursion-heavy.asm +++ b/src/test/ref/no-recursion-heavy.asm @@ -108,6 +108,7 @@ f0: { jsr fa lda #0 sta bb + rts breturn: rts } @@ -182,6 +183,7 @@ fa: { sta bc jsr fb ldx #0 + rts breturn: rts } @@ -255,6 +257,7 @@ fb: { lda #0 jsr fc ldy #0 + rts breturn: rts } diff --git a/src/test/ref/no-recursion-heavy.log b/src/test/ref/no-recursion-heavy.log index aaedb4c46..9de0da7d7 100644 --- a/src/test/ref/no-recursion-heavy.log +++ b/src/test/ref/no-recursion-heavy.log @@ -5942,16 +5942,16 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to breturn in bne b19 +Replacing jump to rts with rts in jmp breturn Succesful ASM optimization Pass5DoubleJumpElimination -Removing instruction jmp breturn -Removing instruction jmp breturn -Removing instruction jmp breturn -Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Removing instruction b19: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp breturn +Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE @@ -6241,7 +6241,7 @@ zp ZP_BYTE:6 [ be#138 be#44 be#137 be#43 be#136 be#42 be#135 be#41 be#134 be#40 FINAL ASSEMBLER -Score: 995 +Score: 1013 //SEG0 File Comments //SEG1 Basic Upstart @@ -6541,6 +6541,7 @@ f0: { //SEG187 [57] phi (byte) bb#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@19->f0::@return#3] -- vbuz1=vbuc1 lda #0 sta bb + rts //SEG188 [57] phi from f0::@9 to f0::@return [phi:f0::@9->f0::@return] //SEG189 [57] phi (byte) be#13 = (byte) be#105 [phi:f0::@9->f0::@return#0] -- register_copy //SEG190 [57] phi (byte) bd#13 = (byte) bd#137 [phi:f0::@9->f0::@return#1] -- register_copy @@ -6761,6 +6762,7 @@ fa: { //SEG332 [108] phi (byte) bd#24 = (byte) bd#35 [phi:fa::@19->fa::@return#1] -- register_copy //SEG333 [108] phi (byte) bc#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@19->fa::@return#2] -- vbuxx=vbuc1 ldx #0 + rts //SEG334 [108] phi from fa::@9 to fa::@return [phi:fa::@9->fa::@return] //SEG335 [108] phi (byte) be#24 = (byte) be#116 [phi:fa::@9->fa::@return#0] -- register_copy //SEG336 [108] phi (byte) bd#24 = (byte) bd#104 [phi:fa::@9->fa::@return#1] -- register_copy @@ -6959,6 +6961,7 @@ fb: { //SEG457 [159] phi (byte) be#35 = (byte) be#46 [phi:fb::@19->fb::@return#0] -- register_copy //SEG458 [159] phi (byte) bd#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@19->fb::@return#1] -- vbuyy=vbuc1 ldy #0 + rts //SEG459 [159] phi from fb::@9 to fb::@return [phi:fb::@9->fb::@return] //SEG460 [159] phi (byte) be#35 = (byte) be#127 [phi:fb::@9->fb::@return#0] -- register_copy //SEG461 [159] phi (byte) bd#35 = (byte) bd#115 [phi:fb::@9->fb::@return#1] -- register_copy diff --git a/src/test/ref/pointer-pointer-2.asm b/src/test/ref/pointer-pointer-2.asm index 71d2899ea..961392dd6 100644 --- a/src/test/ref/pointer-pointer-2.asm +++ b/src/test/ref/pointer-pointer-2.asm @@ -52,14 +52,13 @@ nexttext: { sta textp lda #>text2 sta textp+1 - breturn: rts b1: lda #text1 sta textp+1 - jmp breturn + rts } text1: .text "camelot @" text2: .text "rex @" diff --git a/src/test/ref/pointer-pointer-2.log b/src/test/ref/pointer-pointer-2.log index 61b6ba1ea..6ca52d84c 100644 --- a/src/test/ref/pointer-pointer-2.log +++ b/src/test/ref/pointer-pointer-2.log @@ -700,9 +700,12 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -749,7 +752,7 @@ reg byte a [ nexttext::$0 ] FINAL ASSEMBLER -Score: 5758 +Score: 5761 //SEG0 File Comments // Tests pointer to pointer in a more complex setup @@ -849,7 +852,6 @@ nexttext: { lda #>text2 sta textp+1 //SEG43 nexttext::@return - breturn: //SEG44 [19] return rts //SEG45 nexttext::@1 @@ -859,7 +861,7 @@ nexttext: { sta textp lda #>text1 sta textp+1 - jmp breturn + rts } text1: .text "camelot @" text2: .text "rex @" diff --git a/src/test/ref/roll-sprite-msb.asm b/src/test/ref/roll-sprite-msb.asm index eff9b7b59..80b22ddde 100644 --- a/src/test/ref/roll-sprite-msb.asm +++ b/src/test/ref/roll-sprite-msb.asm @@ -61,7 +61,6 @@ position_sprite: { eor #$ff and SPRITES_XMSB sta SPRITES_XMSB - breturn: rts b1: lda #1 @@ -75,5 +74,5 @@ position_sprite: { !e: ora SPRITES_XMSB sta SPRITES_XMSB - jmp breturn + rts } diff --git a/src/test/ref/roll-sprite-msb.log b/src/test/ref/roll-sprite-msb.log index 437777e4e..758573637 100644 --- a/src/test/ref/roll-sprite-msb.log +++ b/src/test/ref/roll-sprite-msb.log @@ -1044,9 +1044,12 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -1174,7 +1177,7 @@ reg byte a [ position_sprite::$6 ] FINAL ASSEMBLER -Score: 559 +Score: 562 //SEG0 File Comments // Tests rolling sprite MSB by variable amount @@ -1278,7 +1281,6 @@ position_sprite: { and SPRITES_XMSB sta SPRITES_XMSB //SEG38 position_sprite::@return - breturn: //SEG39 [22] return rts //SEG40 position_sprite::@1 @@ -1296,6 +1298,6 @@ position_sprite: { //SEG42 [24] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa ora SPRITES_XMSB sta SPRITES_XMSB - jmp breturn + rts } diff --git a/src/test/ref/sinusgen16.log b/src/test/ref/sinusgen16.log index a65a02b7f..61c5bebe9 100644 --- a/src/test/ref/sinusgen16.log +++ b/src/test/ref/sinusgen16.log @@ -5220,6 +5220,7 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to b3 in beq b12 +Replacing jump to rts with rts in jmp b3 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_sin16s to b4 Succesful ASM optimization Pass5RelabelLongLabels @@ -5233,7 +5234,7 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Removing instruction b12: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp b3 +Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log index 1f2e6c381..f62c8ce2a 100644 --- a/src/test/ref/sinusgen16b.log +++ b/src/test/ref/sinusgen16b.log @@ -7107,7 +7107,9 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to b3 in beq b12 +Replacing jump to rts with rts in jmp b3 Skipping double jump to b3 in beq b12 +Replacing jump to rts with rts in jmp b3 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_sin16sb to b4 Relabelling long label b1_from_sin16s to b4 @@ -7124,8 +7126,8 @@ Removing instruction bbegin: Removing instruction b12: Removing instruction b12: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp b3 -Removing unreachable instruction jmp b3 +Removing unreachable instruction rts +Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE diff --git a/src/test/ref/sinusgen8.asm b/src/test/ref/sinusgen8.asm index a2abbadde..d2caf6c74 100644 --- a/src/test/ref/sinusgen8.asm +++ b/src/test/ref/sinusgen8.asm @@ -305,11 +305,10 @@ sin8s: { eor #$ff clc adc #1 - b4: rts b14: txa - jmp b4 + rts } // 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 diff --git a/src/test/ref/sinusgen8.log b/src/test/ref/sinusgen8.log index e5c3bad1a..9acc3ad45 100644 --- a/src/test/ref/sinusgen8.log +++ b/src/test/ref/sinusgen8.log @@ -4670,6 +4670,8 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp b4 +Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_sin8s to b5 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 @@ -4680,6 +4682,7 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: +Removing instruction b4: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -4971,7 +4974,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 15001 +Score: 15004 //SEG0 File Comments //SEG1 Basic Upstart @@ -5504,7 +5507,6 @@ sin8s: { //SEG221 [109] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] //SEG222 [109] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy //SEG223 sin8s::@4 - b4: //SEG224 sin8s::@return //SEG225 [110] return rts @@ -5512,7 +5514,7 @@ sin8s: { b14: //SEG227 [111] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa - jmp b4 + rts } //SEG228 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. diff --git a/src/test/ref/sinusgen8b.asm b/src/test/ref/sinusgen8b.asm index 362ae2462..82bd586ed 100644 --- a/src/test/ref/sinusgen8b.asm +++ b/src/test/ref/sinusgen8b.asm @@ -760,11 +760,10 @@ sin8s: { eor #$ff clc adc #1 - b4: rts b14: txa - jmp b4 + rts } // 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 diff --git a/src/test/ref/sinusgen8b.log b/src/test/ref/sinusgen8b.log index 7e2eef03c..112d4beaa 100644 --- a/src/test/ref/sinusgen8b.log +++ b/src/test/ref/sinusgen8b.log @@ -7660,6 +7660,8 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to b3 in beq b12 +Replacing jump to rts with rts in jmp b3 +Replacing jump to rts with rts in jmp b4 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_sin16s to b4 Relabelling long label b1_from_sin8s to b5 @@ -7675,8 +7677,9 @@ Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Removing instruction b12: +Removing instruction b4: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp b3 +Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE @@ -8121,7 +8124,7 @@ reg byte a [ mul8u::$1 ] FINAL ASSEMBLER -Score: 28330 +Score: 28333 //SEG0 File Comments //SEG1 Basic Upstart @@ -9318,7 +9321,6 @@ sin8s: { //SEG430 [219] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] //SEG431 [219] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy //SEG432 sin8s::@4 - b4: //SEG433 sin8s::@return //SEG434 [220] return rts @@ -9326,7 +9328,7 @@ sin8s: { b14: //SEG436 [221] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa - jmp b4 + rts } //SEG437 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. diff --git a/src/test/ref/sinusgenscale8.asm b/src/test/ref/sinusgenscale8.asm index 3aadc62a9..ef2e0236e 100644 --- a/src/test/ref/sinusgenscale8.asm +++ b/src/test/ref/sinusgenscale8.asm @@ -481,11 +481,10 @@ sin8s: { eor #$ff clc adc #1 - b4: rts b14: txa - jmp b4 + rts } // 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 diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log index dcf723976..0f7a444eb 100644 --- a/src/test/ref/sinusgenscale8.log +++ b/src/test/ref/sinusgenscale8.log @@ -6869,6 +6869,8 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp b4 +Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b1_from_sin8s to b5 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 @@ -6878,6 +6880,7 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: +Removing instruction b4: Succesful ASM optimization Pass5UnusedLabelElimination Fixing long branch [172] bcc b1 to bcs Fixing long branch [178] bcc b1 to bcs @@ -7257,7 +7260,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 19454 +Score: 19457 //SEG0 File Comments //SEG1 Basic Upstart @@ -8133,7 +8136,6 @@ sin8s: { //SEG388 [178] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] //SEG389 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy //SEG390 sin8s::@4 - b4: //SEG391 sin8s::@return //SEG392 [179] return rts @@ -8141,7 +8143,7 @@ sin8s: { b14: //SEG394 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa - jmp b4 + rts } //SEG395 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. diff --git a/src/test/ref/test-division.asm b/src/test/ref/test-division.asm index ce93f5072..c2c3b1c88 100644 --- a/src/test/ref/test-division.asm +++ b/src/test/ref/test-division.asm @@ -454,11 +454,10 @@ div8s: { eor #$ff clc adc #1 - breturn: rts b9: tya - jmp breturn + rts b3: txa eor #$ff diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log index 0ff0248ce..9974d19a9 100644 --- a/src/test/ref/test-division.log +++ b/src/test/ref/test-division.log @@ -8877,6 +8877,8 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to breturn in beq b9 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 Removing instruction jmp b1 @@ -8887,8 +8889,9 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Removing instruction b9: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp breturn +Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination Fixing long branch [76] bne b1 to beq @@ -9344,7 +9347,7 @@ reg byte a [ div8u::return#3 ] FINAL ASSEMBLER -Score: 32651 +Score: 32654 //SEG0 File Comments // Test the binary division library @@ -10189,7 +10192,6 @@ div8s: { //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@5/div8s::@9->div8s::@return#0] -- register_copy //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@5/div8s::@9->div8s::@return#1] -- register_copy //SEG386 div8s::@return - breturn: //SEG387 [186] return rts //SEG388 div8s::@9 @@ -10197,7 +10199,7 @@ div8s: { //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy tya //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 - jmp breturn + rts //SEG391 div8s::@3 b3: //SEG392 [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index 6f2b427b7..e5701b8c6 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -99,7 +99,6 @@ mul16s_compare: { lda #2 sta BGCOL jsr mul16s_error - breturn: rts b5: iny @@ -122,7 +121,7 @@ mul16s_compare: { sta print_str.str+1 jsr print_str jsr print_ln - jmp breturn + rts str1: .text "signed word multiply results match!@" } // Print a newline @@ -681,14 +680,13 @@ muls16s: { lda j cmp a bne b3 - jmp b1 + rts b5: lda #0 sta return sta return+1 sta return+2 sta return+3 - b1: rts b6: lda #0 @@ -729,7 +727,7 @@ muls16s: { lda i cmp a bne b4 - jmp b1 + rts } // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { @@ -820,7 +818,6 @@ mul16u_compare: { lda a+1 sta mul16u_error.a+1 jsr mul16u_error - breturn: rts b5: iny @@ -847,7 +844,7 @@ mul16u_compare: { sta print_str.str+1 jsr print_str jsr print_ln - jmp breturn + rts str1: .text "word multiply results match!@" } // mul16u_error(word zeropage(3) a, word zeropage($17) b, dword zeropage($b) ms, dword zeropage($19) mn, dword zeropage($11) mf) @@ -960,14 +957,13 @@ muls16u: { lda i cmp a bne b2 - jmp b1 + rts b3: lda #0 sta return sta return+1 sta return+2 sta return+3 - b1: rts } // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log index 2f8b2c167..621cc25f4 100644 --- a/src/test/ref/test-multiply-16bit.log +++ b/src/test/ref/test-multiply-16bit.log @@ -10189,8 +10189,12 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to b4 in beq b15 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp b1 Skipping double jump to b1 in jmp b1_from_b4 Skipping double jump to b4 in beq b15 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp b1 Skipping double jump to b5 in bne b7 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b3_from_b12 to b6 @@ -10215,17 +10219,24 @@ Removing instruction lda #0 Removing instruction lda a+1 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: +Removing instruction breturn: Removing instruction b15: Removing instruction b2: +Removing instruction breturn: Removing instruction b15: +Removing instruction b1: Removing instruction b7: Succesful ASM optimization Pass5UnusedLabelElimination +Replacing jump to rts with rts in jmp b1 +Succesful ASM optimization Pass5DoubleJumpElimination Removing unreachable instruction jmp b4 Removing unreachable instruction jmp b4 Removing unreachable instruction jmp b5 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [110] bne b1 to beq -Fixing long branch [831] bne b1 to beq +Removing instruction b1: +Succesful ASM optimization Pass5UnusedLabelElimination +Fixing long branch [109] bne b1 to beq +Fixing long branch [828] bne b1 to beq FINAL SYMBOL TABLE (label) @1 @@ -10685,7 +10696,7 @@ reg byte a [ mulf_init::$12 ] FINAL ASSEMBLER -Score: 436908 +Score: 439920 //SEG0 File Comments // Test the fast multiplication library @@ -10883,7 +10894,6 @@ mul16s_compare: { //SEG93 [71] phi from mul16s_compare::@7 to mul16s_error [phi:mul16s_compare::@7->mul16s_error] jsr mul16s_error //SEG94 mul16s_compare::@return - breturn: //SEG95 [47] return rts //SEG96 mul16s_compare::@5 @@ -10931,7 +10941,7 @@ mul16s_compare: { //SEG118 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@14->print_ln#0] -- register_copy //SEG119 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy jsr print_ln - jmp breturn + rts //SEG120 [58] phi from mul16s_compare::@3 to mul16s_compare::@15 [phi:mul16s_compare::@3->mul16s_compare::@15] //SEG121 mul16s_compare::@15 //SEG122 [38] phi from mul16s_compare::@15 to mul16s_compare::@4 [phi:mul16s_compare::@15->mul16s_compare::@4] @@ -11772,7 +11782,7 @@ muls16s: { bne b3 //SEG400 [193] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] //SEG401 [193] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy - jmp b1 + rts //SEG402 [193] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] b5: //SEG403 [193] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 @@ -11782,7 +11792,6 @@ muls16s: { sta return+2 sta return+3 //SEG404 muls16s::@1 - b1: //SEG405 muls16s::@return //SEG406 [194] return rts @@ -11835,7 +11844,7 @@ muls16s: { lda i cmp a bne b4 - jmp b1 + rts } //SEG417 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results @@ -12000,7 +12009,6 @@ mul16u_compare: { //SEG489 [245] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] jsr mul16u_error //SEG490 mul16u_compare::@return - breturn: //SEG491 [233] return rts //SEG492 mul16u_compare::@5 @@ -12052,7 +12060,7 @@ mul16u_compare: { //SEG514 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@14->print_ln#0] -- register_copy //SEG515 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy jsr print_ln - jmp breturn + rts //SEG516 [244] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] //SEG517 mul16u_compare::@15 //SEG518 [224] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] @@ -12250,7 +12258,7 @@ muls16u: { bne b2 //SEG599 [273] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] //SEG600 [273] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy - jmp b1 + rts //SEG601 [273] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b3: //SEG602 [273] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 @@ -12260,7 +12268,6 @@ muls16u: { sta return+2 sta return+3 //SEG603 muls16u::@1 - b1: //SEG604 muls16u::@return //SEG605 [274] return rts diff --git a/src/test/ref/test-multiply-8bit.asm b/src/test/ref/test-multiply-8bit.asm index 048712e1c..92b5ae098 100644 --- a/src/test/ref/test-multiply-8bit.asm +++ b/src/test/ref/test-multiply-8bit.asm @@ -63,7 +63,6 @@ mul8s_compare: { sta BGCOL ldx a jsr mul8s_error - breturn: rts b5: inc b @@ -83,7 +82,7 @@ mul8s_compare: { sta print_str.str+1 jsr print_str jsr print_ln - jmp breturn + rts str: .text "signed multiply results match!@" } // Print a newline @@ -434,12 +433,11 @@ muls8s: { iny cpy a bne b3 - jmp b1 + rts b5: lda #0 sta return sta return+1 - b1: rts b6: lda #0 @@ -464,7 +462,7 @@ muls8s: { dey cpy a bne b4 - jmp b1 + rts } // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { @@ -514,7 +512,6 @@ mul8u_compare: { sta BGCOL ldx a jsr mul8u_error - breturn: rts b5: inc b @@ -531,7 +528,7 @@ mul8u_compare: { sta print_str.str+1 jsr print_str jsr print_ln - jmp breturn + rts str: .text "multiply results match!@" } // mul8u_error(byte register(X) a, byte zeropage(3) b, word zeropage(8) ms, word zeropage($c) mn, word zeropage($e) mf) @@ -616,12 +613,11 @@ muls8u: { iny cpy a bne b2 - jmp b1 + rts b3: lda #0 sta return sta return+1 - b1: rts } // Compare the ASM-based mul tables with the KC-based mul tables @@ -668,7 +664,6 @@ mulf_tables_cmp: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - breturn: rts b2: inc asm_sqr @@ -705,7 +700,7 @@ mulf_tables_cmp: { sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - jmp breturn + rts str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" diff --git a/src/test/ref/test-multiply-8bit.log b/src/test/ref/test-multiply-8bit.log index 492b5bb04..6867a2fb9 100644 --- a/src/test/ref/test-multiply-8bit.log +++ b/src/test/ref/test-multiply-8bit.log @@ -10123,8 +10123,13 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Skipping double jump to b4 in beq b14 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp b1 Skipping double jump to b1 in jmp b1_from_b4 Skipping double jump to b4 in beq b14 +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp b1 +Replacing jump to rts with rts in jmp breturn Skipping double jump to b5 in bne b7 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b3_from_b12 to b6 @@ -10151,15 +10156,23 @@ Removing instruction lda #0 Removing instruction lda a Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: +Removing instruction breturn: Removing instruction b14: Removing instruction b2: +Removing instruction breturn: Removing instruction b14: +Removing instruction b1: +Removing instruction breturn: Removing instruction b7: Succesful ASM optimization Pass5UnusedLabelElimination +Replacing jump to rts with rts in jmp b1 +Succesful ASM optimization Pass5DoubleJumpElimination Removing unreachable instruction jmp b4 Removing unreachable instruction jmp b4 Removing unreachable instruction jmp b5 Succesful ASM optimization Pass5UnreachableCodeElimination +Removing instruction b1: +Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE (label) @1 @@ -10672,7 +10685,7 @@ reg byte a [ mulf_init::$12 ] FINAL ASSEMBLER -Score: 224367 +Score: 227382 //SEG0 File Comments // Test the fast multiplication library @@ -10825,7 +10838,6 @@ mul8s_compare: { //SEG84 [47] call mul8s_error jsr mul8s_error //SEG85 mul8s_compare::@return - breturn: //SEG86 [48] return rts //SEG87 mul8s_compare::@5 @@ -10864,7 +10876,7 @@ mul8s_compare: { //SEG103 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@13->print_ln#0] -- register_copy //SEG104 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@13->print_ln#1] -- register_copy jsr print_ln - jmp breturn + rts //SEG105 [57] phi from mul8s_compare::@3 to mul8s_compare::@14 [phi:mul8s_compare::@3->mul8s_compare::@14] //SEG106 mul8s_compare::@14 //SEG107 [39] phi from mul8s_compare::@14 to mul8s_compare::@4 [phi:mul8s_compare::@14->mul8s_compare::@4] @@ -11503,7 +11515,7 @@ muls8s: { bne b3 //SEG391 [196] phi from muls8s::@3 muls8s::@4 to muls8s::@1 [phi:muls8s::@3/muls8s::@4->muls8s::@1] //SEG392 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@4->muls8s::@1#0] -- register_copy - jmp b1 + rts //SEG393 [196] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1] b5: //SEG394 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vbuc1 @@ -11511,7 +11523,6 @@ muls8s: { sta return sta return+1 //SEG395 muls8s::@1 - b1: //SEG396 muls8s::@return //SEG397 [197] return rts @@ -11548,7 +11559,7 @@ muls8s: { //SEG407 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b4 - jmp b1 + rts } //SEG408 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results @@ -11653,7 +11664,6 @@ mul8u_compare: { //SEG461 [243] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error] jsr mul8u_error //SEG462 mul8u_compare::@return - breturn: //SEG463 [233] return rts //SEG464 mul8u_compare::@5 @@ -11689,7 +11699,7 @@ mul8u_compare: { //SEG480 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@13->print_ln#0] -- register_copy //SEG481 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@13->print_ln#1] -- register_copy jsr print_ln - jmp breturn + rts //SEG482 [242] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14] //SEG483 mul8u_compare::@14 //SEG484 [224] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4] @@ -11874,7 +11884,7 @@ muls8u: { bne b2 //SEG580 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] //SEG581 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy - jmp b1 + rts //SEG582 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b3: //SEG583 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 @@ -11882,7 +11892,6 @@ muls8u: { sta return sta return+1 //SEG584 muls8u::@1 - b1: //SEG585 muls8u::@return //SEG586 [279] return rts @@ -11968,7 +11977,6 @@ mulf_tables_cmp: { sta print_line_cursor+1 //SEG622 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy //SEG623 mulf_tables_cmp::@return - breturn: //SEG624 [292] return rts //SEG625 mulf_tables_cmp::@2 @@ -12026,7 +12034,7 @@ mulf_tables_cmp: { //SEG642 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] //SEG643 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- register_copy //SEG644 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy - jmp breturn + rts str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" diff --git a/src/test/ref/true-inline-words.asm b/src/test/ref/true-inline-words.asm index aa26aedd0..4dd088582 100644 --- a/src/test/ref/true-inline-words.asm +++ b/src/test/ref/true-inline-words.asm @@ -17,11 +17,10 @@ main: { beq b1 lda #2 sta bgcol - breturn: rts b1: lda #5 sta bgcol - jmp breturn + rts bs: .byte 'c', 'm' } diff --git a/src/test/ref/true-inline-words.log b/src/test/ref/true-inline-words.log index 7d1807b2b..ccd633255 100644 --- a/src/test/ref/true-inline-words.log +++ b/src/test/ref/true-inline-words.log @@ -298,7 +298,10 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -326,7 +329,7 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER -Score: 37 +Score: 40 //SEG0 File Comments //SEG1 Basic Upstart @@ -362,7 +365,6 @@ main: { lda #2 sta bgcol //SEG14 main::@return - breturn: //SEG15 [7] return rts //SEG16 main::@1 @@ -370,7 +372,7 @@ main: { //SEG17 [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta bgcol - jmp breturn + rts bs: .byte 'c', 'm' } diff --git a/src/test/ref/voronoi.asm b/src/test/ref/voronoi.asm index e395a3a28..564ab2293 100644 --- a/src/test/ref/voronoi.asm +++ b/src/test/ref/voronoi.asm @@ -131,7 +131,6 @@ findcol: { bne b2 lda #0 sta return - breturn: rts b2: txa @@ -163,7 +162,7 @@ findcol: { iny cpy #numpoints bcc b12 - jmp breturn + rts b12: stx mindiff jmp b1 diff --git a/src/test/ref/voronoi.log b/src/test/ref/voronoi.log index d915bf4e5..27c59855f 100644 --- a/src/test/ref/voronoi.log +++ b/src/test/ref/voronoi.log @@ -2280,6 +2280,8 @@ Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b1 @@ -2289,6 +2291,7 @@ Removing instruction lda #$28 Removing instruction lda y Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE @@ -2426,7 +2429,7 @@ reg byte a [ findcol::$10 ] FINAL ASSEMBLER -Score: 1504588 +Score: 1504591 //SEG0 File Comments // The screen @@ -2662,7 +2665,6 @@ findcol: { lda #0 sta return //SEG100 findcol::@return - breturn: //SEG101 [58] return rts //SEG102 findcol::@2 @@ -2720,7 +2722,7 @@ findcol: { bcc b12 //SEG125 [57] phi from findcol::@7 to findcol::@return [phi:findcol::@7->findcol::@return] //SEG126 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@7->findcol::@return#0] -- register_copy - jmp breturn + rts //SEG127 findcol::@12 b12: //SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuxx